所以我注意到树视图花了很长时间才排序,首先我发现在添加每个已排序的项目后,大部分时间都花在重新绘制控件上.但eitherway我有一个感觉:名单< T>的.sort()花费比合理的长,所以我用一个自定义的排序方法进行基准测试它反对.结果很有趣,名单< T>的.sort()花了约20倍的时间,这是我曾经在.NET中遇到这样一个简单的任务中表现最令人失望的.
我的问题是,这可能是什么原因?我的猜测是调用比较委托的开销,进一步必须调用String.Compare()(在字符串排序的情况下).增加列表的大小似乎会增加性能差距.有任何想法吗?我正在尝试尽可能多地使用.NET类,但在这种情况下我不能.
编辑:
static List<string> Sort(List<string> list) { if (list.Count == 0) { return new List<string>(); } List<string> _list = new List<string>(list.Count); _list.Add(list[0]); int length = list.Count; for (int i = 1; i < length; i++) { string item = list[i]; int j; for (j = _list.Count - 1; j >= 0; j--) { if (String.Compare(item,_list[j]) > 0) { _list.Insert(j + 1,item); break; } } if (j == -1) { _list.Insert(0,item); } } return _list; }