0

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

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

1 回答 1

1

你们有什么感想?

这就是我的想法...

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

    代码正确运行更为重要。在将时间花在(或浪费)性能上之前,请先关注这一点。

  2. 我还认为询问人们认为什么更快是一种毫无意义的练习。

如果你真的想知道,你需要写一个合适的微基准,测量和比较结果。然而,编写能够提供可靠结果的 Java 微基准测试并不是一蹴而就的。因此,建议您使用 Calliper 等框架进行基准测试。

于 2015-04-11T03:17:07.623 回答