【发布时间】:2011-02-02 02:08:12
【问题描述】:
我有一个加载的 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<string,IEnumerable<XElement>> ToArray 是这样我现在可以评估表达式。我认为这不会引起任何真正的速度问题。问题在于 Where 本身。我正在搜索从 1k 到 10k 的项目。
【问题讨论】:
-
您是否真的看到了任何性能损失,或者您是否担心如果您的搜索集太大,可能会有一个?
-
我看到它的最后一行代码很大。最上面的几行只是为了表明我正在尽可能多地缓存。有更多代码可以缓存 abdl 的结果。我需要知道我需要将此 XDocument 转换为什么,或者使用什么特殊方法来允许我需要做的事情......但速度更快。 :-)
标签: c# .net performance caching linq-to-xml