文档章节

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
粉丝 42
博文 107
码字总数 47780
作品 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内存溢出(OOM)异常完全指南

这也许是目前最为完整的Java OOM异常的解决指南。 1、 Java应用程序在启动时会指定所需要的内存大小,它被分割成两个不同的区域:和: JVM内存模型示意图 这两个区域的大小可以在JVM(Java虚...

大数据之路
2012/12/31
0
3
java 通配符的应用— java 排序算法

这几天无聊,又重新学起java的排序算法,为DualPivotQuickSort做准备。为了更好地适应各种情况,我们选择使用通用类型T和通配符的上下界来实现,同时这次谈的是对数组对象的排序。如果你对j...

天地一MADAO_
2014/03/02
0
0
读书笔记之《Java并发编程的艺术》-并发编程容器和框架(重要)

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

Hi徐敏
2015/11/11
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Delphi 常用API 函数(好多都没见过)

AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeIconicWindows 排列一个父窗口的最小化子窗口 AttachThread...

dillonxiao
6分钟前
0
0
阿里云ubuntu配置Android开发环境编译Apk

1.命令行下载Android SDK $ wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz $ tar zxvf android-sdk_r24.4.1-linux.tgz 2.列出可以现在的SDK ./android list sdk  -a 3......

SuShine
7分钟前
0
0
maven导出项目依赖的jar包

一、导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: mvn dependency:copy-dependencies 二、导出到自定义目录中 在mav...

来来来来来
7分钟前
0
0
Win10下React Native环境安装教程及错误处理办法(实测)

https://blog.csdn.net/zhangatle/article/details/53289471 准备工作 注意:小米手机MIUI有坑,文末有解决方法 1 首先,你需要先安装Node.js并进行环境变量的配置,具体可以参考我的另一篇文...

james_laughing
7分钟前
0
0
IDEA2018 Mybatis plugin破解

IDEA2018 Mybatis plugin破解 Mybatis Plugin 一、Mybatis Plugin插件是什么 提供Mapper接口与配置文件中对应SQL的导航 编辑XML文件时自动补全 根据Mapper接口, 使用快捷键生成xml文件及SQL...

DemonsI
8分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部