语言细节:C# .NET 3.5/4.0;项目是一个预编译的 DLL,一个被其他产品调用/使用的“模块”。
我的问题是关于整体效率的,我意识到这可能归结为“内存使用与 CPU 周期”的决定,这很好——我仍然想知道你认为更好的路线。
我有一个 MyObjects 列表传递给一个方法,该方法需要按 Property2 对列表进行排序,用它做“一些事情”,然后按 Property1 对列表进行排序以做“其他事情”并继续生活。重要提示:当 List首次进入方法(例如,从数据层)时,它已经按Property1 排序。
排序都将是“自定义内联”,如下所示:
myList.Sort((ObjA, ObjB) => ObjA.Prop2.CompareTo(ObjB.Prop2));
做这两个排序是个好主意吗?或者,将列表克隆到一个新的 ListB 并且只调用一次排序(在 ListB 上,通过 Prop2)会更好吗?然后用它做“一些事情”,完成后,将原始列表用于“其他事情”并继续。
我最初的猜测是“两个排序”会旋转更多 CPU 周期,而“克隆和排序”会使用更多内存(因为它必须创建新的 ListB 对象)——是的,我知道 List 成员(MyObjects)会不会被克隆,它们只会被新的 ListB 指向。
想法?