gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:55:44 24 4
gpt4 key购买 nike

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

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);

还有很多,比如 friend 提到的Buffer.BlockCopyEnumerable.Repeat。其中哪一个最有效,或者如果还有另一个更有效,那是什么?

最佳答案

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

效率取决于代码的上下文和最终目标以及数组中的项目数。获取内存位置可能比遍历数组以清除它更快。根据用于保存数据的内存类型,存在优化方法来清除数据列表或数组,这通常比手动操作更快。


话虽如此,但很少有人直接清除数组,而是通过使用 clean 可用数组的值。

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

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


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

对于开发组织而言,该程序员的时间比用户很可能不会注意到的几个时间周期的节省更昂贵。

关于c# - 清除数组最有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32023394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com