【发布时间】:2025-12-17 18:25:01
【问题描述】:
我有一个 XML 文件,(asp.net) 应用程序在启动时加载该文件,每个 http 请求通过调用 GetElementById 向其中请求至少 50 个项目。处理它的类是静态的,因此 XmlDocument.Load() 只被调用一次。 XML文件结构非常简单,每个节点只有“ID”标签,节点之间没有层次结构(都在根节点下)。典型节点的格式为:
<txt id="OfficeEmail">bla@bla.com</txt>
我想知道将 XML 内容(约 300 个节点)加载到静态字典是否会提高请求内容时的性能。我可以猜测,一旦加载了 XmlDocument,它就会将节点缓存在一些有效的数据结构中,但是用字典实现它会不会有巨大的开销?
【问题讨论】:
-
@PetervanderHeijden 在调试代码时,似乎大部分时间都花在了按 Id 查找节点的函数上。例如,每个随机执行暂停都会导致该函数。没有进行真正的分析。
-
每次都会搜索所有节点。尝试看看字典是否能提高性能可能是个好主意。
-
字典似乎可以提高性能,可能还有多种其他方法可以提高性能但没有看到代码...
-
@Enigmativity 这正是我的问题 - XmlDocument 拥有什么样的数据结构?我认为有某种优化,通过 ID 寻找节点将导致比 O(n) 更有效的复杂性......
-
@Shay___ - XML 文档中的任何元素/属性都没有什么特别之处,因此它不会自动创建用于快速搜索的内部结构。这将是线性的。
标签: c# asp.net performance dictionary xmldocument