我想使用System.currentTimeMillis()计算analizeString()的执行时间。
public static void main(String[] args) {
String myString ="";
for(int character = 0; character < 50000; character+=10000){
for(int i = 0; i < character; i++){
myString =+ randomCharacter();
}
long time1 = System.currentTimeMillis();
analizeString(myString);
long time2 = System.currentTimeMillis();
printTimeInFile(time2 - time1);
}}
在这种情况下,当输入为40000时,我发现的时间约为4秒。但是,如果我不使用这样的循环:
public static void main(String[] args) {
String myString ="";
long input = 40000;
//for(int character = 0; character < 50000; character+=10000){
for(int i = 0; i < input; i++){
myString =+ randomCharacter();
}
long time1 = System.currentTimeMillis();
analizeString(myString);
long time2 = System.currentTimeMillis();
printTimeInFile(time2 - time1);
}
时间约为0.3秒。
使用循环,程序非常慢。 为什么会有这种差异?我的假设是上次也添加了。 有什么帮助吗?谢谢!
答案 0 :(得分:3)
在第一个示例中,您具有10000 + 20000 + 30000 + 40000 = 100000次迭代,并且您的方法针对100000个字符的字符串运行最后一次迭代。
在第二个示例中,您有一个40000个字符的字符串。这就是为什么时机不同的原因。
检查analizeString()方法,将字符串增加2.5倍,则计时增加13倍以上(4秒/0.3秒)