XDocument 属性性能问题
我有一个已加载的 XDocument,我需要有效地获取等于某个值并且属于某个元素的所有属性。我当前的
IEnumerable<XElement> vm;
if (!cacher2.TryGetValue(name,out vm)) {
vm = project.Descendants(XName.Get(name));
cacher2.Add(name, vm);
}
XElement[] abdl = (vm.Where(a => a.Attribute(attribute).Value == ab)).ToArray();
cacher2 是一个 Dictionary
ToArray,这样我现在就可以计算表达式了。我认为这不会引起任何真正的速度问题。问题在于Where 本身。我正在搜索从 1k 到 10k 的项目。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要调用
.ToArray
吗?我不清楚为什么你不能循环添加到字典(或调用.ToDictionary
)。然而;你有简介吗?如果这里存在瓶颈,您可以尝试退回到 XmlReader 并将其视为消防水带:不过,使用您现有的代码,我很想做到这一点:
不同之处在于,通过不调用
.Value
,即使未设置该属性,它也应该可以工作。当然,如果您要求始终设置此属性,则在这种情况下可以接受例外。Do you need to call
.ToArray
? I'm unclear on why you can't just loop over adding to the dictionary (or call.ToDictionary
). However; have you profiled? If there is a bottleneck here, you might try dropping back toXmlReader
and treating it as a firehose:With your existing code, though, I would be very tempted to make it:
The difference is that by not calling
.Value
it should work even when the attribute isn't set. Of course if you demand that this attribute is always set then an exception may be acceptable in this case.