我有一个应用程序,我在其中执行数十万次计算。目前我们所有的值都是双精度的。我使用JFormula引擎进行大部分计算,并注意到api使用了一个双精度参数,因此当我传入一个双精度参数时,会发生一些自动装箱。我已经阅读了一些文章,并创建了一些简单的测试,确实注意到了性能影响,但我仍然在努力弄清楚它所花费的时间来检查我的代码并解决这个问题,这将是任何性能改进的价值所在。我想知道其他人是否有过类似的经验,并通过使用原语获得了性能提升?
发布于 2008-10-27 18:02:48
不适合将自动装箱和取消装箱用于科学计算或其他对性能敏感的数字代码。-- Sun FAQ
发布于 2008-10-27 18:01:22
除了其他建议(这是良好的分析和基准测试非常重要),我想说,如果JFormula在每个方法调用中做了任何重要的事情,那么在进行调用时的装箱/取消装箱可能是无关紧要的。拆箱特别快,因为它不需要任何内存分配-只需从盒子中复制现有的值,真的。
简而言之:当然要做测试,但我不认为会有多大的影响。
发布于 2008-10-27 17:58:53
您可以尝试的是使用和不使用自动装箱来进行简单的基准测试。通过时间分析器运行它们(推荐使用visualvm)。找出时间差,并将其缩放到您的程序中,以查找在您的程序中命中的大致时间
https://stackoverflow.com/questions/240837
复制相似问题