[英]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;
}
你們有什么感想?
這就是我的想法...
我認為您很可能會浪費時間進行微優化。 在大多數情況下,這樣的代碼片段在性能上的差異太小,無法對程序的整體性能產生重大影響。
正確運行代碼更為重要。 在花時間(或浪費時間) 之前,請專注於此。
我還認為,問人們認為更快的做法是沒有意義的。
如果您真的想知道,則需要編寫適當的微基准,測量並比較結果。 但是,編寫能夠提供可靠結果的Java微型基准並不是直截了當的。 因此,建議您使用諸如Calliper之類的框架作為基准。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.