之前一直认为因为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()方法的效率测试,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
输出: [12, 34, 56, null, 32, 1] 不应该是: [12, 34, 56, null, null, null] 吗? 这是为什么? 版本:GraalVM for JDK 17
本文向大家介绍JavaScript数组去重的几种方法效率测试,包括了JavaScript数组去重的几种方法效率测试的使用技巧和注意事项,需要的朋友参考一下 以下是我针对网上三种高效率方法总结与效率测试,如果大家有更好的意见或建议也可以提出,大家共勉学习。 数组去重法1: 数组去重法2: 数组去重法3: 效率测试方法: 效率测试结果: 总结 以上就是关于JavaScript几种数组去重的方法效率测试
多次调用特定枚举类的value()函数是否效率低下? 我见过一些现有代码的实例,其中values()的结果被缓存以供重用。这有用吗?
关于C++中的类和结构之间的区别,人们已经问了几个问题。引用最多的区别是缺省可见性不同。就连斯特鲁斯特鲁普似乎也在暗示,基本上没有什么区别。 我认为我的问题不是重复的,因为我想问一些具体而及时的问题:使用结构来对付类在速度、内存使用或效率方面是否有任何影响?偏爱一个而不是另一个能基于那些东西的任何优点吗? 作为参考,我正在评估一个人专门使用结构的C++代码,并将其移植到一个资源有限的ARM体系结构
我是Jmaeter的新手,目前正在尝试充分利用它来创建API性能测试计划。 让我们考虑以下场景。 我们有一个APi,它返回数据,例如一个或多个零件的零件可用性和订单详细信息。 我想分析api在不同负载模式下的响应时间。 假设我们有 5 个用户。-每个用户向 API 发送一系列重复的请求。-每个用户发出的请求仅对该用户是唯一的。即用户 1 请求部分 a、b、c。用户 2 请求部分 d、e、f...等
我有一个名为dealDeck()的公共静态void方法,该方法从名为deck的ArrayList中获取对象,并根据它们在列表中的位置将它们分离并放置到4个不同的ArrayList中。是否有JUnit测试来检查方法是否按计划运行? 是否可以或应该测试此方法?