前言
總說計算機是擅長於做位運算的,那么到底它有多擅長呢?
通過簡單的測試,來探究一樣位運算和取模運算的運算效率對比。
一、測試代碼:
1 public class BitAndModulus { 2 @Test 3 public void bit() { 4 int number = 10000 * 10;//分別取值10萬、100萬、1000萬、1億 5 int a = 1; 6 7 long start = System.currentTimeMillis(); 8 for(int i = number; i > 0 ; i++) { 9 a &= i; 10 } 11 long end = System.currentTimeMillis(); 12 System.out.println("位運算耗時: " + (end - start)); 13 } 14 15 @Test 16 public void modulus() { 17 int number = 10000 * 1000;//分別取值10萬、100萬、1000萬、1億 18 int a = 1; 19 20 long start = System.currentTimeMillis(); 21 for(int i = number; i > 0; i++) { 22 a %= i; 23 } 24 long end = System.currentTimeMillis(); 25 System.out.println("取模運算耗時: " + (end - start)); 26 } 27 }
二、測試結果:(時間單位:毫秒)
計算次數 位運算 取模運算 倍數(位運算:取模運算)
10萬: 734 20489 27
100萬: 742 20544 27
1000萬: 735 20408 27
1億: 712 19545 27
三、結論
位運算確實比取模運算快得多,大約快了27倍。