我最近不得不优化一个高性能系统中的 api 调用,该系统List<Integer>
对int[]
转换做了一些。我最初的发现是,对于我预期的平均元素数量,纯 java 似乎比当前使用的 Apache Commons ArrayUtils 快很多。因子 100-200 甚至我有点惊讶。问题是我一次只对一对转换运行我的测试,为我想要测试的每个元素重新启动我的小测试程序。这样做,对于任何数量的元素,纯 java 的速度要快得多,最多可以达到几个 k,并开始平衡。现在我坐下来编写一个更好的测试程序,该程序一次运行并输出许多不同大小的列表的结果,我的结果完全不同。
似乎 ArrayUtils 只是在第一次运行时较慢,然后在所有后续运行中更快,无论列表大小如何,也不管第一次运行的元素数量如何。
你可以在这里找到我的测试课:http: //pastebin.com/9EYLZQKV
请帮我挑选其中的漏洞,因为现在我不明白为什么我会得到我得到的输出。
非常感谢!