清除数组最有效的方法是什么?

本文关键字:是什么 方法 有效 清除数组 | 更新日期: 2023-09-27 18:07:58

当我刚开始编程时,我正在查看一些旧代码,看到了这个可爱的宝石:

int[] Answers = new int[4];
//Some amount of code later, inside a function
Answers[0] = Answers[1] = Answers[2] = Answers[3] = 0;

现在,虽然它可以工作,但由于4个赋值操作符,它看起来不是很有效,所以我做了一些研究,并找到了一些替代方案:

Array.Clear(Answers, 0, 4);
((IList)Answers).Clear();
Parallel.For(0, 4, index => Answers[index] = 0);

还有很多其他的,例如一个朋友提到了Buffer.BlockCopyEnumerable.Repeat。哪一个是最有效的,或者如果有另一个更有效,它是什么?

清除数组最有效的方法是什么?

清除数组最有效的方法是什么?

效率取决于上下文和代码的最终目标以及数组中有多少项。获取内存位置可能比在数组上迭代到clear更快。根据用于保存数据的内存类型,已经有优化的方法来Clear数据列表或数组,这通常比手工操作要快。


话虽如此,但很少直接清除数组,只是通过创建一个新的数组,使用该数组的clean值,让该数组被垃圾收集(大多数情况下是开/关循环)。

随后,通过遵循更好的编程原则,很少指定要创建和清除的数组大小以使其被重用。

对于重用和数组大小的创建范例可能在索引和一般操作中引入微妙和非微妙的错误。因为动态创建数据列表(数组)并向其中添加(插入)以及让语言处理数据的内存分配/取消分配的安全性是处理数据操作的一种更安全和更有效的方法。


因此,清除任何数组以供重用是没有意义的。我们不再在基于8088的机器上编程,因为内存和处理时间非常宝贵。坦率地说,试图优化小代码(然后由原始编码人员或新开发人员维护这些代码)以满足现代计算机上的大多数编程需求是愚蠢的,并且浪费了公司宝贵的开发时间

对于开发组织来说,程序员的时间比节省几个周期的时间更昂贵,而用户无论如何都很可能不会注意到。