Java Date计算开始结束时间

qq_42337384 2019-01-24 10:50:51
使用Date对象计算出String和StringBuffer对象反复修改后的时间效率。
...全文
294 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐先生 2019-02-12
  • 打赏
  • 举报
回复
在使用String对象时,每追加一次,会重新生成一个对象,在循环达到一定数量时还会造成内存溢出,但是使用StringBuffer就不会出现内存溢出的问题,而且效率比较高。
qq_39936465 2019-01-25
  • 打赏
  • 举报
回复
设计2个基本相同的一系列修改操作程序块,一个用string来完成 一个用stringbuffer完成。用date在程序块开始前记录当前时间,结束后再记录当前时间,2个时间的差就是执行时间,比较下2个时间的耗时多少,哪个耗时少就比较有效率。
  • 打赏
  • 举报
回复
下面我简单写了一下比较的方法与测试,通过追加不同数量的A字符,去判断String跟StringBuffer所用时间大小,并且归集结果来比较

public static void main(String[] args) {
int minCount = 1000;//最小追加数量
int maxCount = 2000;//最大追加数量
List<Integer> equal = new ArrayList<Integer>(); //平等
List<Integer> str = new ArrayList<Integer>(); //String效率高
List<Integer> sb = new ArrayList<Integer>(); //StringBuffer效率高
String append = "A";//追加字符
int sum = 0;
for (int i = minCount; i <= maxCount; i++) {
if (calulateString(i, append) > calulateStringBuffer(i, append)) {
sb.add(i);
continue;
} else if (calulateString(i, append) == calulateStringBuffer(i, append)) {
equal.add(i);
continue;
} else if (calulateString(i, append) < calulateStringBuffer(i, append)) {
str.add(i);
continue;
} else {
//时间无法比较
System.out.println(calulateString(i, append) + "-" + calulateStringBuffer(i, append));
}
}
System.out.println(equal.size() + "相同效率:" + Collections.max(equal) + "--" + Collections.min(equal));
System.out.println(equal);
if (str.size() > 0) {
System.out.println(str.size() + "String效率高:" + Collections.max(str) + "--" + Collections.min(str));
System.out.println(str);
}
if (sb.size() > 0) {
System.out.println(sb.size() + "StringBuffer效率高:" + Collections.max(sb) + "--" + Collections.min(sb));
System.out.println(sb);
}
System.out.println(sum);
}
/*
* 计算string时间
*/
public static long calulateString(int size, String append) {
String str = new String();
long start = System.currentTimeMillis();
for (int i = 0; i < size; i++) {
str += append;
}
return System.currentTimeMillis() - start;
}
/*
* 计算string时间
*/
public static long calulateStringBuffer(int size, String append) {
StringBuffer str = new StringBuffer();
long start = System.currentTimeMillis();
for (int i = 0; i < size; i++) {
str.append(append);
}
return System.currentTimeMillis() - start;
}


得出结果如下
。。。
1-0
1-0
1-0
1-0
1-0
2-0
。。。
61相同效率:1826--1017
[1017, 1019, 1021,。。。。]
8String效率高:1936--1323
[1323, 1355, 1367, 1390, 1399, 1444, 1730, 1936]
612StringBuffer效率高:2000--1000
[1000, 1001, 1003,。。。。]
0

可以看到,StringBuffer效率高的数量更多。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧