javase 复习汇总一:strignbuilder += +效率比较
2014-04-12 16:12
344 查看
package Test2;
public class test1{
public static void main(String [] args){
String text = "";
long beginTime = System.currentTimeMillis();
for(int i = 0; i < 10000; i++){
text +i;
}
long endTime = System.currentTimeMillis();
System.out.println("Running time:" + (endTime - beginTime));
StringBuilder builder = new StringBuilder("");
beginTime = System.currentTimeMillis();
for(int i = 0; i < 10000; i++){
builder.append(String.valueOf(i));
}
endTime = System.currentTimeMillis();
System.out.println("Runing time:" + (endTime - beginTime));
String txt2="";
beginTime = System.currentTimeMillis();
for(int i = 0; i < 10000; i++){
txt2=txt2+i;
}
endTime = System.currentTimeMillis();
System.out.println("Runing time:" + (endTime - beginTime));
}
}
Running time:370
Runing time:5
Runing time:197
证明 Stringbuilder >"+">"+="
还有一个 x++,x=x+1 ,x+=1
x=x+1 要寻址两次,时间最长
x+=
寻找x的地址,然后读取地址中x的值,再在寄存器中将x的值加1,接着将计算结果存到x的地址中(这里计算机知道读与写两个操作的地址是相同的)
x++ 寻找x的地址,然后读取地址中x的值,然后直接将地址中的值加1
public class test1{
public static void main(String [] args){
String text = "";
long beginTime = System.currentTimeMillis();
for(int i = 0; i < 10000; i++){
text +i;
}
long endTime = System.currentTimeMillis();
System.out.println("Running time:" + (endTime - beginTime));
StringBuilder builder = new StringBuilder("");
beginTime = System.currentTimeMillis();
for(int i = 0; i < 10000; i++){
builder.append(String.valueOf(i));
}
endTime = System.currentTimeMillis();
System.out.println("Runing time:" + (endTime - beginTime));
String txt2="";
beginTime = System.currentTimeMillis();
for(int i = 0; i < 10000; i++){
txt2=txt2+i;
}
endTime = System.currentTimeMillis();
System.out.println("Runing time:" + (endTime - beginTime));
}
}
Running time:370
Runing time:5
Runing time:197
证明 Stringbuilder >"+">"+="
还有一个 x++,x=x+1 ,x+=1
x=x+1 要寻址两次,时间最长
x+=
寻找x的地址,然后读取地址中x的值,再在寄存器中将x的值加1,接着将计算结果存到x的地址中(这里计算机知道读与写两个操作的地址是相同的)
x++ 寻找x的地址,然后读取地址中x的值,然后直接将地址中的值加1
相关文章推荐
- javase 复习汇总二:hashtable和hashmap 的区别
- C# VC VB Delphi Lazarus C++ builder 多种编程语言执行效率比较
- javase 复习汇总三:== euqal之间的区别
- mysql两种递归查询效率比较
- fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
- C#复制数组的两种方式,以及效率比较
- 调各种函数写文件的效率比较
- MyBatis-spring和spring JDBC批量插入Mysql的效率比较
- 一种效率比较高的分页存储过程
- 【效率】整数平方根算法的效率比较
- jquery拼接字符串效率比较高的方法
- SQL的EXISTS与in、not exists与not in 效率比较和使用
- java IO写入文件效率——几种方法比较
- 软件开发全套视频教程汇总(javaSE,javaEE,linux,android开发,C# ,web前端,大数据云计算,数据挖掘,web前端,php开发,UI设计,C++开发,3D视频)
- [置顶] JavaSE复习总结(一)
- MyBatis-spring和spring JDBC批量插入Mysql的效率比较
- mysql直接执行和预处理执行的效率比较
- RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
- JavaSE复习之二 基础知识:面向对象
- 常见内排序实现汇总(含部分优化实现,基于链表的实现),以及性能比较