從msdn中,我們知道Array 的Clear 方法的時間復雜度為O(n)。
我們今天測試一下,到底這個方法快,還是自己編寫的快:
是Clear()快,還是直接new一個對象快。
看程序
private void Experiment() { System.Diagnostics.Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); string[] aa = new string[10000]; for (var loop = 0; loop < 100000; loop++) { // string[] aa = new string[10000]; for (var i = 0; i < 10000; i++) { aa[i] = "a"; } //Array.Clear(aa, 0, 10000); for (var i = 0; i < 10000;i++ ) { aa[i] = null; } } stopwatch.Stop(); Console.WriteLine("All timeL:"+stopwatch.Elapsed.TotalSeconds); }
經過對比,得出如下數據:
對於Clear()與new object兩種方案對比,前者耗時5.7秒。後者耗時6.3s
對於Clear()與自己編寫的遍歷算法對比,前者是5.7s,後者是8.5s。
這些數據的基礎條件是對一個length為10000的數組執行10萬次統計的時間。
意思很明顯了。如果你需要執行一次,就無所謂了。
如果需要很多次,那麼還是認真寫代碼比較好。