Skip to content

Commit dbbbf13

Browse files
committed
perf: do not duplicate nodes when indexing
Signed-off-by: Vincent Biret <[email protected]>
1 parent 4e75438 commit dbbbf13

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/Microsoft.OpenApi/Reader/ParseNodes/MapNode.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ private PropertyNode GetPropertyNodeFromJsonNode(string key, JsonNode? node)
2424
return new PropertyNode(Context, key, node ?? JsonNullSentinel.JsonNull);
2525
}
2626

27-
private readonly List<PropertyNode> _nodes;
27+
private readonly Dictionary<string, PropertyNode> _nodes;
2828
public MapNode(ParsingContext context, JsonNode node) : base(
2929
context, node)
3030
{
@@ -34,16 +34,16 @@ public MapNode(ParsingContext context, JsonNode node) : base(
3434
}
3535

3636
_node = mapNode;
37-
_nodes = _node.Select(p => GetPropertyNodeFromJsonNode(p.Key, p.Value)).ToList();
37+
_nodes = _node.ToDictionary(static p => p.Key, p => GetPropertyNodeFromJsonNode(p.Key, p.Value), StringComparer.Ordinal);
3838
}
3939

4040
public PropertyNode? this[string key]
4141
{
4242
get
4343
{
44-
if (_node.TryGetPropertyValue(key, out var value))
44+
if (_node.ContainsKey(key))
4545
{
46-
return GetPropertyNodeFromJsonNode(key, value);
46+
return _nodes[key];
4747
}
4848

4949
return null;
@@ -134,7 +134,7 @@ public override Dictionary<string, HashSet<T>> CreateArrayMap<T>(Func<ValueNode,
134134

135135
public IEnumerator<PropertyNode> GetEnumerator()
136136
{
137-
return _nodes.GetEnumerator();
137+
return _nodes.Values.GetEnumerator();
138138
}
139139

140140
IEnumerator IEnumerable.GetEnumerator()

0 commit comments

Comments
 (0)