>传递(浮点数,浮点数,浮点数)作为方法参数vs(float [])传递得更快,其中数组有三个项?
>方法返回float []与设置作为参数传递给方法的float []的内容相比更快吗?
>用实际计算替换方法调用是否更快,即A = sum(B,C)是否比A = B C慢?假设sum(x,y){return x y}
编辑:
谢谢你的所有答案,伙计们!在我关闭这个帖子之前,如果有人知道,我还有一个更快的问题:
>如果我正在使用一个类一遍又一遍地重复计算相同的统计数据(然后将它们扔掉),那么创建实例变量以充当容器以避免连续的重新分配和解除分配会更好吗?
解决方法
Is it faster to pass
(float,float,float)
as method parameters vs
(float[])
where the array has three terms?
那要看.如果你已经有一系列浮动方便,它应该没有任何区别.如果每次都在构造数组,则需要一些时间来分配数组,并且可能需要一些时间来构造数组.
有关系吗?如果你在一个连续执行了数百万次的紧密循环中执行它,并且在应用程序的生命周期中多次执行它,它肯定会这样做.
Is it faster for a method to return a float[] vs setting the contents
of a float[] that is passed to the method as an argument?
如果您需要每次为返回值构造float数组,那么肯定不会比在预先存在的数组中设置值更快.
仅仅因为两个选项都涉及设置值,其中一个选项具有创建新数组的额外任务.但是创建一个新阵列可能非常非常快.
尽管如此,如果您在应用程序中快速连续执行数百万次,对其进行基准测试,可能会为您节省一些时间.
Is it faster to replace method calls with the actual calculations i.e.
instead of isA=sum(B,C)
any slower thanA=B+C
? assuming
sum(x,y){return x+y}
几乎不可能说.内置的HotSpot代码优化器非常擅长发现这些东西并为你的优化.
如果您对此进行基准测试,请尝试将sum方法设为私有,这将使HotSpot更容易确定它可以被内联(尽管如果您没有任何被覆盖的sum方法的实现,它也会自己发现它)
关于基准测试的一点是:
它可能会帮助您的应用程序,使用您正在使用的当前版本的VM(以及您当前的代码库).如果您决定升级到新版本的VM,您可能会发现性能特征发生变化,您可能需要再次进行优化.
所以只有它对你的应用程序真的很重要,否则它可能是浪费精力.
最好先关注您的算法及其时空复杂性;任何收益都会永远增加.