簡體   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