【发布时间】:2025-12-13 13:25:06
【问题描述】:
这是一个例子:
originalList 是一个对象列表
var subList = (originalList.Where(x => x.number < 0)).ToList();
originalList.RemoveAll(x => x.number < 0);
稍后我将使用subList。
在此示例中,originaList 被迭代两次。这个函数被调用了数十亿次,originalList 是一个很大的List
有没有简单的方法来提高性能?
一件重要的事情:对象的数字值可以在两次调用此函数之间改变。
【问题讨论】:
-
这感觉可能是XY problem - 你必须使用
List吗?更好的数据结构可能更优化。 -
例如,使用
LinkedList而不是List,我得到的RemoveAllAndReturn方法比List版本快50 到200 倍,具体取决于删除的频率. -
不,我不必使用列表。非常感谢,我现在就去测试。
-
请注意,
LinkedList占用更多空间 - 如果这很关键,或者时间真的很关键,那么实现单链表可能会更有效。
标签: c# performance linq collections