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