文档章节

java 交换数据

清尘V
 清尘V
发布于 2016/04/15 14:39
字数 282
阅读 11
收藏 1
int a = 34423;
int b = 24345;
a = a ^ b;
b = b ^ a;
a = a ^ b;

如果采用常规算法:

int temp=a;
a = b;
b =temp;

计算效率:

测试方法

import org.freebencher.FbJobResult;
import org.freebencher.FbTarget;
import org.freebencher.Freebencher;
import org.junit.Test;

/**
 * Vincent 创建于 2016/4/15.
 */
public class DemoTest {

    @Test
    public void swap() {

        FbJobResult result = Freebencher.benchmark(new FbTarget() { //the behavior
                                                       public boolean invoke() {
                                                           int a = 34423;
                                                           int b = 24345;
                                                           test1(a, b);
                                                        //   test2(a, b);
                                                           return true;
                                                       }
                                                   }, 20, // concurrency,
                500000 // number of tests to run
        );

        System.out.println(result.report());

    }

    private static void test1(int a, int b) {
        a = a ^ b;
        b = b ^ a;
        a = a ^ b;
    }

    private static void test2(int a, int b) {
        int temp = a;
        a = b;
        b = temp;
    }


}

第一种方法:

Test completed.
Disconnected from the target VM, address: '127.0.0.1:63459', transport: 'socket'
Concurrency:             20
Time taken for tests:    89801ms
Successful tests:        500000
Failed tests:            0
Tests per second:        5567.866727542009
Mean time per test:      4.4E-5ms
Percentage of the test finished within a certain time (ms)
50%:                     0
60%:                     0
70%:                     0
80%:                     0
90%:                     0
95%:                     0
98%:                     0
99%:                     0
100%:                    2

第二章方法:

Test completed.
Concurrency:             20
Time taken for tests:    90237ms
Successful tests:        500000
Failed tests:            0
Tests per second:        5540.964349435376
Mean time per test:      3.0E-5ms
Percentage of the test finished within a certain time (ms)
50%:                     0
60%:                     0
70%:                     0
80%:                     0
90%:                     0
95%:                     0
98%:                     0
99%:                     0
100%:                    1

第一种方法比第二种有微弱优势,推荐第一种


个人博客:http://www.whereta.com

© 著作权归作者所有

共有 人打赏支持
上一篇: “求余”
下一篇: 单例模式
清尘V
粉丝 41
博文 107
码字总数 47780
作品 0
青岛
程序员
私信 提问
Java虚拟机监控指标及监控配置

版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/70229653 主要是对Java虚拟机(JVM)的远程监视,如jdk自带的工具j...

smooth00
2017/04/28
0
0
【JDK源码分析】同步工具Exchanger,它内部实现原理你看懂了吗?

前言 Exchanger应该算并发包中工具使用相对少的,因为它主要用于线程之间交换数据,它的用法比较简单在不同线程之间使用exchange方法交换数据,但是内部实现比较巧妙,使用了unsafe的CAS原子...

编程SHA
2018/12/17
0
0
protocol buffer 对socket协议封装成二进制传输

protocol buffer 是 google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是...

MrLovelyCbb
2012/02/15
0
0
protocol buffer

protocol buffer 是 google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是...

MrLovelyCbb
2011/12/08
0
0
读书笔记之《Java并发编程的艺术》-并发编程容器和框架(重要)

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
1

没有更多内容

加载失败,请刷新页面

加载更多

node调用dll

先安装python2.7 安装node-gyp cnpm install node-gyp -g 新建一个Electron-vue项目(案例用Electron-vue) vue init simulatedgreg/electron-vue my-project 在package.json中的scripts里添......

Chason-洪
2分钟前
0
0
Linux系统快速查找文件的技巧

Linux常用命令中,有些命令可以帮助我们查找二进制文件,帮助手册或源文件的位置,也有的命令可以帮助我们查找磁盘上的任意文件,今天我们就来看看这些命令如何使用。 which which命令会在P...

Linux就该这么学
4分钟前
0
0
dotConnect for Oracle入门指南(八):通过OracleCommand类使用存储过程

【下载dotConnect for Oracle最新版本】 dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技术上,为基于Oracle数据库的应用程序提供完整的解决方案。它为设计应用程序结构带来了新的...

电池盒
5分钟前
0
0
JavaScript是如何工作的:深入类和继承内部原理 + Babel和TypeScript 之间转换

摘要: 深入JS系列15。 原文:深入类和继承内部原理 + Babel和TypeScript 之间转换 作者:前端小智 Fundebug经授权转载,版权归原作者所有。 这是专门探索 JavaScript 及其所构建的组件的系列...

Fundebug
15分钟前
0
0
js 引用传值问题踩坑

先自测一下,答案在最下边。 <html><head><script type="text/javascript" src="/jquery/jquery.js"></script><script type="text/javascript">$(document).ready(function(){$("button......

S三少S
26分钟前
11
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部