繁体   English   中英

这两种算法中哪一种效率更高?

[英]Which of these 2 algorithms is more efficient?

我正在编写一些代码,并想出了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;
    }

你们有什么感想?

这就是我的想法...

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

    正确运行代码更为重要。 在花时间(或浪费时间) 之前,请专注于此。

  2. 我还认为,问人们认为更快的做法是没有意义的。

如果您真的想知道,则需要编写适当的微基准,测量并比较结果。 但是,编写能够提供可靠结果的Java微型基准并不是直截了当的。 因此,建议您使用诸如Calliper之类的框架作为基准。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM