首页 > 代码库 > 关于List.ToArray()方法的效率测试
关于List.ToArray()方法的效率测试
之前一直认为因为List内部实现是数组,ToArray的实现只是将数组返回出去而已。
今天测了一下结果完全不一样
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万数量大小的List,调用1万次ToArray的时间消耗是417ms左右。
报着疑惑看了下源码,没想到它是把内部数组复制了一份再返回
public T[] ToArray(){ T[] array = new T[this._size]; Array.Copy(this._items, 0, array, 0, this._size); return array;}
看来对于重复性操作,可以考虑直接缓存成全局变量,或者直接用List作为参数。
关于List.ToArray()方法的效率测试
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。