我正在写一些代码,我想出了两个函数,用于从左边包围一个数组。我将其命名为负模数,因为它类似于使用模数从右侧环绕数组。我意识到性能影响在很小的范围内可以忽略不计,但我想知道哪一个更有效。你们觉得怎么样?
static int negative_modulo(int a, int b)
{
int val1 = Math.Abs(a);
if (val1 <= b)
return b + a;
else
return b - (val1 % b);
}
static int negative_modulo2(int a, int b)
{
int val1 = Math.Abs(a);
int n = val1 / b + 1;
return a + b * n;
}
答案 0 :(得分:1)
你们有什么想法?
这就是我的想法......
我认为你很可能浪费你的时间进行微观优化。在大多数情况下,像这样的代码片段的性能差异太小,无法对程序的整体性能产生显着影响。
代码正常工作更为重要。
我也认为询问人们认为更快的是一个毫无意义的练习。
如果您真的想知道,您需要编写适当的微观基准,测量并比较结果。但是,编写提供可靠结果的Java微基准测试并不是直截了当的。因此,建议您使用Calliper等框架作为基准测试。