Kev*_* Xu 6 java algorithm performance android computation
这只是关于进行大量计算的一系列问题.要么我在网上找不到答案,要么我还需要澄清.
传递(float, float, float)方法参数和(float[])数组有三个术语的速度是否更快?
方法返回float[]vs设置float[]作为参数传递给方法的内容是否更快?
用实际计算替换方法调用是否更快,而不是A=sum(B,C)更慢A=B+C?假设sum(x,y){return x+y}
编辑:
谢谢你的所有答案,伙计们!在我关闭这个帖子之前,如果有人知道,我还有一个更快的问题:
传递
(float, float, float)方法参数和(float[])数组有三个术语的速度是否更快?
那要看.如果你已经有一系列浮动方便,它应该没有任何区别.如果每次都在构造数组,则需要一些时间来分配数组,并且可能需要一些时间来构造数组.
有关系吗?如果你在一个连续执行了数百万次的紧密循环中执行它,并且在应用程序的生命周期中多次执行它,它肯定会这样做.
方法返回float []与设置作为参数传递给方法的float []的内容相比更快吗?
如果您需要每次为返回值构造float数组,那么肯定不会比在预先存在的数组中设置值更快.仅仅因为两个选项都涉及设置值,其中一个选项具有创建新数组的额外任务.但是创建一个新阵列可能非常非常快.
尽管如此,如果您在应用程序中快速连续执行数百万次,对其进行基准测试,可能会为您节省一些时间.
用实际计算替换方法调用是否更快,而不是
A=sum(B,C)更慢A=B+C?假设sum(x,y){return x+y}
几乎不可能说.内置的HotSpot代码优化器非常擅长发现这些东西并为你的优化.
如果您对此进行基准测试,请尝试制作该sum方法private,这将使HotSpot更容易确定它可以内联(尽管如果您没有任何被覆盖的sum方法实现,它也会自行发现)
关于基准测试的一点是:
它可能会帮助您的应用程序,使用您正在使用的当前版本的VM(以及您当前的代码库).如果您决定升级到新版本的VM,您可能会发现性能特征发生变化,您可能需要再次进行优化.
所以只有它对你的应用程序真的很重要,否则它可能是浪费精力.
最好先关注您的算法及其时空复杂性; 任何收益都会永远增加.