Ric*_*oss 1 c# dictionary linked-list
我最近在分析一个应用程序,试图弄清楚为什么某些操作非常慢.我的应用程序中的一个类是基于LinkedList的集合.这是一个基本的大纲,只显示了几种方法,并删除了一些绒毛:
public class LinkInfoCollection : PropertyNotificationObject, IEnumerable<LinkInfo>
{
private LinkedList<LinkInfo> _items;
public LinkInfoCollection()
{
_items = new LinkedList<LinkInfo>();
}
public void Add(LinkInfo item)
{
_items.AddLast(item);
}
public LinkInfo this[Guid id]
{ get { return _items.SingleOrDefault(i => i.Id == id); } }
}
Run Code Online (Sandbox Code Playgroud)
该集合用于在单个列表中存储超链接(由LinkInfo类表示).但是,每个超链接还有一个指向它的超链接列表,以及它指向的超链接列表.基本上,它是一个网站的导航地图.因为这意味着当链接回到彼此时你可以进行无限递归,我将它实现为一个链表 - 据我所知,它意味着每个超链接,无论多少次被另一个超链接引用,只有永远只有一个对象的副本.
上例中的ID属性是GUID.
随着冗长的描述,我的问题很简单 - 根据分析器,当为一个相当小的网站构建这个地图时,上面提到的索引器被称为不少于27906次.这是一笔非凡的金额.如果真的有必要多次调用,我仍然需要解决,但同时,我想知道是否有更有效的方法来执行索引器,因为这是分析器识别的主要瓶颈(同样假设它没有说谎!).我仍然需要链表行为,因为我当然不希望这些超链接的多个副本浮动在我的内存周围,但我也需要能够通过一个唯一的密钥访问它们.
有没有人有任何关于提高这个索引器性能的建议.我还有另一个使用URI而不是GUID的索引器,但由于构建传入/传出链接是由GUID完成的,因此问题较小.
谢谢; 理查德莫斯
归档时间: |
|
查看次数: |
1750 次 |
最近记录: |