问题描述
- 位运算效率高还是位运算效率高?
-
在《java程序性能优化》中写到,位运算是运算中最高效的,而我依照书上的代码运行了一遍
发现并不是这样。补上代码:
public class BitOperate { public static void main(String[] args) { nomal(); bit(); } private static void nomal() { long start =System.currentTimeMillis(); long a = 100; for (int i = 0; i < 100000000; i++) { a*=2; a/=2; } System.out.println("nomal total used:" + (System.currentTimeMillis() - start) + "ms"); } private static void bit() { long start =System.currentTimeMillis(); long a = 100; for (int i = 0; i < 100000000; i++) { a<<=1; a>>=1; } System.out.println("bit total used:" + (System.currentTimeMillis() - start) + "ms"); } }
输出:
nomal total used:1ms bit total used:3ms
望能解惑
解决方案
这和你机器当时的运行状态有关系,不代表实际情况,看我的测试结果
nomal total used:1864ms
bit total used:771ms
解决方案二:
在很快的设备上,由于操作系统会进行任务调度,因此很多未知因素会导致出现偏差,要想真正准确测试,应该在单任务操作系统甚至裸机上测试,,
但位运算快是毫无疑问的
在手机上的arm处理器上,就比较明显了,如图:
解决方案三:
和你的机器有关,但位运算确实是最快的
时间: 2024-08-03 03:17:56