首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 陣列初始化與清零效能比較:五種方法實測

     編輯:關於C語言

測試環境

P4 3.0E / DDR400 512MB / WinXP SP2 / VS2003。陣列大小 65536 bytes,迴圈 50000 次,重複 10 次取平均。

五種方法

  1. test = new byte[65536]; 重新配置陣列(自動歸零)。
  2. Memset(test, 0, 65536); 自訂 for 迴圈逐元素歸零。
  3. for (k=0; k<65536; test[k++]=0); 內聯迴圈歸零。
  4. Array.Clear(test, 0, 65536); BCL 內建方法。
  5. test2.CopyTo(test, 0); 以預先準備的零陣列複製覆蓋。

測試結果 (毫秒)

方法最長最短平均
1. new 陣列1937.51812.51842.19
2. Memset 函式4593.7546254584.38
3. 內聯迴圈6046.885984.386001.56
4. Array.Clear562.5640.5581.25
5. CopyTo 零陣列812.5750770.31

分析

  • Array.Clear 最快,經過高度優化(內部可能呼叫 memset 或向量化指令)。
  • CopyTo 次之,以空間換時間(需額外零陣列)。
  • 內聯迴圈反而比函式呼叫慢,推測為 JIT 編譯優化差異。
  • 重新 new 陣列涉及記憶體配置與 GC,效能中等。

建議

  • 單純清零:Array.Clear。
  • 需設定特定模式:預先建立樣板陣列用 CopyTo。
  • 避免手寫迴圈清零。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved