Java中自增(++)和赋值(=)运算效率比较
前言
将一个int型数组x[]从初值0变成1。有两种做法:
// 只考虑后自增
int length = x.length;
for (int i = 0; i < length; i++) {
x[i]++;
}
int length = x.length;
for (int i = 0; i < length; i++) {
x[i] = 1;
}
测试代码
/**
* @author PengHao
* @version 1.0
* @date 2019-04-30 下午6:38:02
* Environment: Windows 10
* IDE Version: Eclipse 2019-3
* JDK Version: JDK1.8.0_112
*/
public class Efficiency {
private static int LENGTH = 21474836;
private static long begin, end;
/**
* @return 自增运算用时
*/
private static long autoIncrementAfter() {
int[] x = new int[LENGTH];
begin = System.currentTimeMillis(); // 当前时间
for (int i = 0; i < LENGTH; i++) {
x[i]++;
}
end = System.currentTimeMillis(); // 当前时间
return end - begin; // 循环用时
}
/**
* @return 赋值运算用时
*/
private static long copyValue() {
begin = System.currentTimeMillis();
int[] x = new int[LENGTH];
for (int i = 0; i < LENGTH; i++) {
x[i] = 1;
}
end = System.currentTimeMillis();
return end - begin;
}
public static void main(String[] args) {
System.out.println("LENGTH=" + LENGTH);
System.out.println("后自增用时:" + autoIncrementAfter());
System.out.println("赋值用时:" + copyValue());
}
}
运行截图


为了严谨性(与顺序无关),将第一组数据main方法中计算顺序交换后:

结论
显然,后自增要比赋值的运算效率高。数据仅供参考。
写在最后:
- 如需转载,请于首页至少注明链接形式的wowpH的博客这几个字;
- 代码原创,如需公开引用,不能删除首行注释(作者,版本号,时间等信息)。
- 如果有疑问欢迎评论留言,尽量解答。
Java中自增(++)和赋值(=)运算效率比较的更多相关文章
- 关于JAVA中Byte数据类型二进制赋值运算报错问题
自从JDK7更新之后,新增了二进制变量的表示,支持将整数类型用二进制来表示,用0b开头: 例如: byte b= (byte) 0b1000_0001; short s = (short) 0b100 ...
- Java中LinkedList的fori和foreach效率比较
在<Java中ArrayList的fori和foreach效率比较>中对ArrayList的两种循环方式进行了比较,本次对LinkedList的两种遍历方式进行效率的比较. 1. list ...
- 关于java中自增,自减,和拓展运算符的小讨论
java中运算符很多,但是能深入讨论的不算太多.这里我仅仅以++,*=为例做讨论. 例:++ i=0; i=i++ + ++i;//i=1 i=++i+i++;//i=2 i=i++ -++i;//i ...
- java中String类型变量的赋值问题
第一节 String类型的方法参数 运行下面这段代码,其结果是什么? package com.test; public class Example { String str = new String( ...
- Java中Byte类型数据在运算中的问题
比如: byte a=1; byte b=2; byte c; c=a+b; //这样是计算不出c,是错误的 c=a+1; //这样也是不能计算c的 c=64+1; //为什么这样就能计算c,在Jav ...
- Java中long类型直接赋值大数字 注意事项
在java中,我们都知道有八种基本数据类型:byte. char. short .int. long. float. double .boolean 下面列出以下四种数据类型及其取值范围: 本文主要讲 ...
- 关于JAVA中string直接初始化赋值和new的区别,是否可以联系到int[]的情况
String str1 = "ABC"; String str2 = new String("ABC"); String str1 = “ABC”;可能创建一个 ...
- java中多种写文件方式的效率对比实验
一.实验背景 最近在考虑一个问题:“如果快速地向文件中写入数据”,java提供了多种文件写入的方式,效率上各有异同,基本上可以分为如下三大类:字节流输出.字符流输出.内存文件映射输出.前两种又可以分为 ...
- Java 中 HashMap 初始化时赋值
1.HashMap 初始化的文艺写法 HashMap 是一种常用的数据结构,一般用来做数据字典或者 Hash 查找的容器.普通青年一般会这么初始化:HashMap<String, Strin ...
随机推荐
- Yarn状态机
1 概述 为了增大并发性,Yarn采用事件驱动的并发模型,将各种处理逻辑抽象成事件和调度器,将事件的处理过程用状态机表示.什么是状态机? 如果一个对象,其构成为若干个状态,以及触发这些状态发生相互转移 ...
- meshing-轴
原视频下载地址:https://yunpan.cn/cqrJRm32dMmAL 访问密码 9dd9
- DES算法实现
概述(团队项目) DES是一个分组加密算法,它以64位为分组对数据加密.同时DES也是一个对称算法:加密和解密用的是同一个算法.DES是一个包含16个阶段的"替换–置换"的分组加密 ...
- 手写一个MVVM
最近看了珠峰的架构课——实现一个MVVM. 首先,我们来了解一下什么是MVVM. MVVM是Model-View-ViewModel的简写.它本质上就是MVC 的改进版.MVVM 就是将其中的View ...
- Flutter移动电商实战 --(48)详细页_详情和评论的切换
增加切换的效果,我们主要是修改这个地方 这样我们的评论的内容就显示出来了 最终代码 details_web.dart import 'package:flutter/material.dart'; i ...
- VS Code 使用技巧[转载]
原文:VS Code 快捷键(VS Code Shortcuts.pdf) 常用 General 按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show ...
- asyncio与gevent并发性能测试
asyncio与gevent并发性能测试 在对网站进行扫描或者暴破时需要对网站进行高并发操作,然而requests+concurrent多线程性能上不太理想,了解到python用得比较多的并发库有as ...
- jq删除标签
<script>$(function(){ $("div").remove()})</script>
- hyperledger学习资料
http://www.cnblogs.com/aberic/p/7527831.htmlhttps://www.ibm.com/developerworks/cn/cloud/library/cl-t ...
- xcode出现the file couldn't be opened怎么解决
右键——show In finder——显示xcode包内容——将有数字的删除——把有用的xcode双击