關(guān)于List.ToArray()方法的效率測試
之前一直認(rèn)為因為List內(nèi)部實(shí)現(xiàn)是數(shù)組,ToArray的實(shí)現(xiàn)只是將數(shù)組返回出去而已。
今天測了一下發(fā)現(xiàn)并不是那樣
var a = new List<int>(); for (int i = 0; i < 10000; i++) { a.Add(i); } DebugHelper.StartWatch(); foreach (var i in Enumerable.Range(0, 10000)) { a.ToArray(); } DebugHelper.StopWatch();
1萬數(shù)量大小的List,調(diào)用1萬次ToArray的時間消耗是417ms左右。
報著疑惑看了下源碼,沒想到它是把內(nèi)部數(shù)組復(fù)制了一份再返回
public T[] ToArray() { T[] array = new T[this._size]; Array.Copy(this._items, 0, array, 0, this._size); return array; }
看來對于重復(fù)性操作,可以考慮直接緩存成全局變量,或者直接用List作為參數(shù)。
以上所述是小編給大家介紹的關(guān)于List.ToArray()方法的效率測試,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
javascript 可控式透明特效實(shí)現(xiàn)代碼
透明特效是script.aculo.us提到的特效中最簡單的特效之一。既然是特效,必須涉及時間與空間的概念。時間我們可以用setTimeout與setInterval,個人比較喜歡setTimeout,雖然它每次調(diào)用都重復(fù)注冊,但可控性比較好。2010-01-01JavaScript通過字典進(jìn)行字符串翻譯轉(zhuǎn)換的方法
這篇文章主要介紹了JavaScript通過字典進(jìn)行字符串翻譯轉(zhuǎn)換的方法,涉及javascript字符串轉(zhuǎn)換的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03微信小程序?qū)崙?zhàn)之上拉(分頁加載)效果(2)
這篇文章主要介紹了微信小程序?qū)崙?zhàn)之上拉加載、分頁加載效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04腳本吧 - 幻宇工作室用到j(luò)s,超強(qiáng)推薦base.js
腳本吧 - 幻宇工作室用到j(luò)s,超強(qiáng)推薦base.js...2006-12-12js中位數(shù)不足自動補(bǔ)位擴(kuò)展padLeft、padRight實(shí)現(xiàn)代碼
這篇文章主要介紹了js中位數(shù)不足自動補(bǔ)位擴(kuò)展之padLeft、padRight實(shí)現(xiàn)方法,主要是通過String.prototype擴(kuò)展實(shí)現(xiàn),需要的朋友可以參考下2020-04-04