性能优化-位运算效率高还是位运算效率高?

问题描述

位运算效率高还是位运算效率高?

在《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处理器上,就比较明显了,如图:

解决方案三:

和你的机器有关,但位运算确实是最快的

时间: 2016-01-27

性能优化-位运算效率高还是位运算效率高?的相关文章

C#性能优化实践

性能主要指两个方面:内存消耗和执行速度.性能优化简而言之,就是在不影响系统运行正确性的前提下 ,使之运行地更快,完成特定功能所需的时间更短. 本文以.NET平台下的控件产品MultiRow为例,描 述C#性能优化的实践. 性能优化原则 理解需求 MultiRow的一个性能需求是:"百万行 数据绑定下平滑滚动."整个MultiRow项目的开发过程一直在考虑这个目标. · 理解瓶颈 99%的性能消耗是由于1%的代码造成的.大部分性能优化都是针对这1%的瓶颈代码进行的.具体实施也 就分为两步

JVM性能优化(一)JVM技术入门

作者 Eva Andreasson  译者:赵峰 校对:方腾飞  原文链接 Java应用程序是运行在JVM上的,但是你对JVM技术了解吗?这篇文章(这个系列的第一部分)讲述了经典Java虚拟机是怎么样工作的,例如:Java一次编写的利弊,跨平台引擎,垃圾回收基础知识,经典的GC算法和编译优化.之后的文章会讲JVM性能优化,包括最新的JVM设计--支持当今高并发Java应用的性能和扩展. 如果你是一个开发人员,你肯定遇到过这样的特殊感觉,你突然灵光一现,所有的思路连接起来了,你能以一个新的视角来回

Java虚拟机JVM性能优化(一):JVM知识总结_java

Java应用程序是运行在JVM上的,但是你对JVM技术了解吗?这篇文章(这个系列的第一部分)讲述了经典Java虚拟机是怎么样工作的,例如:Java一次编写的利弊,跨平台引擎,垃圾回收基础知识,经典的GC算法和编译优化.之后的文章会讲JVM性能优化,包括最新的JVM设计--支持当今高并发Java应用的性能和扩展. 如果你是一个开发人员,你肯定遇到过这样的特殊感觉,你突然灵光一现,所有的思路连接起来了,你能以一个新的视角来回想起你以前的想法.我个人很喜欢学习新知识带来的这种感觉.我已经有过很多次这样

可靠性、可用性和容灾设计这些活动都是围绕 “安全” 这个核心,而性能优化,提升响应性则是围绕 “效率”

  「我们一直这样做开发,时间做久了,便忘了当初的本意.」 有关软件系统开发,我们谈些什么? 我们谈过程,编码规范.开发流程.同行评审.结对编程.持续集成,从瀑布到敏捷再到极限编程. 我们谈架构,企业级.J2EE.容器化.SOA(面向服务架构).Microservices(微服务化). 我们谈规模,大容量.高并发.大数据. 我们还谈可靠性.可用率.n个9.响应时间等等... 这一切的核心是什么? 先讲个电力行业的一个故事,电力的项目我没做过,对电厂的原理虽有所了解,但看见那些大规模的电站还是感觉

位运算中的异或运算 .

位运算是非常迅速的,因为它直接对内存中的二进制数据进行操作.  按位运算除了,按位与,按位非,按位左移,按位右移,还有按位异或. 按位异或运算定义, 1 ^ 1=0 1 ^ 0=1 0 ^ 1=1 0 ^ 0=0 异或,就是"看看你们到底一样不一样.不一样就为1,一样就为0."   按位异或运算的规律是 定理一a ^ b = b ^ a 定理二 a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c; 定理三 a ^ b ^ a = b, a ^ a^ b = b,

c++-link中重载&amp;amp;lt;&amp;amp;lt;运算,但是不是位运算,而是输出,类似C++,这个可以实现么?

问题描述 link中重载<<运算,但是不是位运算,而是输出,类似C++,这个可以实现么? link中重载<<运算,但是不是位运算,而是输出,类似C++,这个可以实现么? 解决方案 这和LINQ有什么关系? 解决方案二: 我可以理解为:你想用c或者汇编模拟<<运算 c,不可以:汇编,算了吧

线性表 长整数运算-C++语言,利用线性表实现100位长整数的加减乘运算

问题描述 C++语言,利用线性表实现100位长整数的加减乘运算 要求输入和输出是每4位一组,加法和减法用不同的程序实现,并且要考虑输入数据的符号,且要用线性表建立数

.NET框架WPF中加载高质量大图慢的性能优化

最近的项目中,遇到一个关于WPF中同时加载多张图片时,内存占用非常高的问题. 问题背景: 在一个ListView中同时加载多张图片,注意:我们需要加载的图片分辨率非常高. 代码: XAML: <Grid>     <Grid.RowDefinitions>         <RowDefinition Height="Auto"/>         <RowDefinition Height="*"/>     <

PHP 读写Cookie效率分析与性能优化

目录 一,什么是PEAR与Benchmark类 二,为什么要分析PHP读写Cookie情况 三,性能测试代码 四,性能测试结果 五,性能测试总结 六,setcookie函数说明 七,附性能测试源代码下载 参考资料 一,什么是PEAR与Benchmark类 请参考PHP性能优化系列 第二期 PHP性能优化工具篇Benchmark类调试执行时间 第一期 PHP性能优化准备篇图解PEAR安装 二,为什么要分析PHP读写Cookie情况 1,什么是Cookie? Cookie,指某些网站为了辨别用户身份