场景
Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化:
Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化_java热点函数
参考以上性能测试工具的使用。
阿里巴巴《java开发手册》泰山版关于集合转数组时规范声明:
【强制】使⽤集合转数组的⽅法,必须使⽤集合的 toArray(T[] array),传⼊的是类型完全⼀致、⻓度为0的空数组。
反例:直接使⽤ toArray ⽆参⽅法存在问题,此⽅法返回值只能是 Object[] 类,若强转其它类型数组将出现ClassCastException 错误
注:
实现
新建测试类,分别测试以上四种情况
测试结果
从上面的结果中可以看出,阿里手册推荐的设置为0的方法性能最好,大于size的方法性能最差。
具体原因已经给出:
1) 等于 0,动态创建与 size 相同的数组,性能最好。
2) ⼤于 0 但小于 size,重新创建⼤小等于 size 的数组,增加 GC 负担。
3) 等于 size,在⾼并发情况下,数组创建完成之后,size 正在变⼤的情况下,负⾯影响与 2 相同。
4) ⼤于 size,空间浪费,且在 size 处插⼊ null 值,存在 NPE 隐患。