繁体   English   中英

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

[英]What's the most efficient way to clear an array?

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

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数据列表或数据数组的方法,通常比手工完成要快。


随着中说,虽然一个很少直接清除阵列,并且简单地通过创建具有可用阵列的清洁值的新的数组让阵列被垃圾收集 (ON OFF周期的大部分)。

随后,通过遵循更好的编程规范,很少会指定要创建的数组大小并清除以重新使用它。

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


因此,清除任何数组以供重用变得毫无意义。 我们不再在内存和处理时间非常宝贵的基于8088的计算机上编程。 坦率地尝试针对现代计算机上的大多数编程需求优化少量代码 (然后由原始编码人员或新开发人员维护该代码)是愚蠢的,并且浪费了公司宝贵的开发时间

对于程序员来说,程序员的时间要比节省几个时间的循环所花费的时间要多得多,而用户很少会注意到这些时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM