这两种算法中哪一种更有效?

时间:2015-04-11 03:01:51

标签: java performance algorithm modulus coding-efficiency

我正在写一些代码,我想出了两个函数,用于从左边包围一个数组。我将其命名为负模数,因为它类似于使用模数从右侧环绕数组。我意识到性能影响在很小的范围内可以忽略不计,但我想知道哪一个更有效。你们觉得怎么样?

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;
    }

1 个答案:

答案 0 :(得分:1)

  

你们有什么想法?

这就是我的想法......

  1. 我认为你很可能浪费你的时间进行微观优化。在大多数情况下,像这样的代码片段的性能差异太小,无法对程序的整体性能产生显着影响。

    代码正常工作更为重要。

  2. 我也认为询问人们认为更快的是一个毫无意义的练习。

  3. 如果您真的想知道,您需要编写适当的微观基准,测量并比较结果。但是,编写提供可靠结果的Java微基准测试并不是直截了当的。因此,建议您使用Calliper等框架作为基准测试。