前言
总说计算机是擅长于做位运算的,那么到底它有多擅长呢?
通过简单的测试,来探究一样位运算和取模运算的运算效率对比。
一、测试代码:
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倍。