一个测试JAVA运算时间的程序,为什么在eclipse中第二次运行时出错!

raoyongchao 2009-04-14 06:46:14
import java.util.Random;
/**
* @author 饶永超 郑州大学软件学院
*
*/
public class Rank {
Random r=new Random();
public void rank3(){
int n[][]=new int[100][3];
for(int j=0;j<100;j++){
for(int i=0;i<3;i++){
n[j][i]=r.nextInt(10);
}
}
String s="排列三号码:\n";
for(int i=0;i<3;i++){
s+=" "+n[r.nextInt(100)][i];
}
System.out.println(s);
}
public void rank5(){
int n[][]=new int[100][5];
for(int j=0;j<100;j++){
for(int i=0;i<5;i++){
n[j][i]=r.nextInt(10);
}
}
String s="排列五号码:\n";
for(int i=0;i<5;i++){
s+=" "+n[r.nextInt(100)][i];
}
System.out.println(s);
}

public static void main(String args[]){
long start=System.currentTimeMillis();
Rank r=new Rank();
r.rank3();
r.rank5();
long end=System.currentTimeMillis();
long time=end-start;
System.out.print(start+" "+end+" "+time);
}
}
这个程序为什么在第一次云行时计算出程序运行的时间是15毫秒,而在以后的运行中都是0毫秒?
...全文
258 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
raoyongchao 2009-06-19
  • 打赏
  • 举报
回复
我有分析了一下这个程序本身的算法并不耗时,也许占用的的时间不到一个毫秒数
可以执行这个程序试一下:
public class Rank {
public long fb(long n){
if(n==0||n==1){
return 1;
}else
{
return fb(n-1)+fb(n-2);
}
}
public static void main(String args[]){
long start=System.currentTimeMillis();
Rank r=new Rank();
System.out.print("起始时间:"+start);
for(int i=0;i<30;i++){
System.out.println(r.fb(i));
}
long end=System.currentTimeMillis();
System.out.print("结束时间:"+end);
long time=end-start;
System.out.print("用时:"+time);
}
}
结果:
起始时间:12453797310151
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
结束时间:1245379731062用时:47
raoyongchao 2009-06-19
  • 打赏
  • 举报
回复
打印出来是一样的!
结果:
1245379080921 排列三号码:
7 7 1
排列五号码:
0 2 8 6 1
1245379080921 1245379080921 1245379080921 0
ghostgant 2009-04-17
  • 打赏
  • 举报
回复
代码我测试了一下:

代码改了下并加了三个段点:

public static void main(String args[]){
long start=System.currentTimeMillis();
. System.out.print(start+" ");
Rank r=new Rank();
r.rank3();
r.rank5();
long end=System.currentTimeMillis();
. System.out.print(end+" ");
long time=end-start;
. System.out.print(start+" "+end+" "+time);
}
调试了一下:

1239975943140 排列三号码:
1 1 1
排列五号码:
4 7 4 0 7
1239975945671 2531
有效果 分析一下原因:执行程序的等待CPU资源。如果执行时刻cpu资源正在执行其他命令,那么将等待CPU资源<顶一楼>
yyy717yyy 2009-04-16
  • 打赏
  • 举报
回复
你把毫秒数也打印出来看看是不是一样。
铁匠梁 2009-04-14
  • 打赏
  • 举报
回复
程序无问题,是执行程序的等待CPU资源。如果执行时刻cpu资源正在执行其他命令,那么将等待CPU资源。

58,454

社区成员

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

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