返回信息流有一个测试用例,其中包含多个类相互调用,就是简单的A类调用B类,B类又调用了C类,想看一下总体运行时间,但是发现运行多次的时候(用for循环),第一次运行时间比较长,其余的运行时间比较短,不清楚这可能是哪方面的问题?
测试过程基本就是下面这种情况:
for (int i = 0; i < 10; i++) {
long lasting = System.currentTimeMillis();
A a = new A();
a.show();
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒");
Thread.sleep(1000*3);
}
这是一条镜像帖。来源:北邮人论坛 / java / #12088同步于 2009/11/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[求助]关于Java运行时间
pingguo2010
2009/11/8镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
其实代码主要就是上面的一段,里面的类A里面就是有一个Show方法,其中New了一个B类,B类也一样,这样一个简单的小例子,结果也是这样,第一次十几ms,后面都是0ms了。
你在循环外,先new一下A和B
比如A tmpA = new A(); B tmpB = new B();
然后再测测
【 在 pingguo2010 (wain) 的大作中提到: 】
: 其实代码主要就是上面的一段,里面的类A里面就是有一个Show方法,其中New了一个B类,B类也一样,这样一个简单的小例子,结果也是这样,第一次十几ms,后面都是0ms了。
因为一个.class加载到虚拟机里面运行需要大量的时间。要从java的搜索路径里找到相应的class文件,要从硬盘上读取文件,然后加载到内存里,很多很慢的操作。
一旦到了内存里以后,这些过程都不需要了,自然就快了。