List.Sort IComparer 性能
我正在尝试对一对 int 数组进行排序 (int[] a; int[] b;)
如果我使用 Array.Sort(a,b) 那么性能会很好。
但是,我更喜欢使用 List<> 并将 int 对加载到结构中。 我可以使用 Array.Sort() 和一个重载来实现它,该重载为结构提供了一个简单的比较器,但它比 Array.Sort(a,b) 慢了大约 4 倍,
这正常吗?
I'm trying to sort a pair of int arrays (int[] a; int[] b;)
If I use Array.Sort(a,b) then the performance is great.
However, I'd prefer to use a List<> and load the int pairs in a struct.
I can get this to work using Array.Sort() with an overload that provides a simple comparer for the struct but it's about 4 times slower than the Array.Sort(a,b)
Is that normal?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这听起来很现实; 您引入了更多的复杂性(更多的查找等,更多的虚拟方法,更多的范围检查),因此它只会变得更慢(数组访问非常直接且非常快)。
看起来您可以通过实现 IComparer而不是委托方法来更快地获得它(但不如数组那么快); (编辑),使用
IComparable
再次更快:使用代码:
That sounds realistic; you are introducing more complexity (more lookups etc, more virtual methods, more range checks), so it can only get slower (array access is very direct and very quick).
It looks like you can get it a bit quicker (but not as quick as the array) by implementing an
IComparer<T>
instead of the delegate approach; (edit) and faster again usingIComparable<T>
:With code: