簡體   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