-2
考虑下面的代码较小的执行时间:动态绑定提供了比静态绑定
import java.io.*;
import java.util.*;
class parent{
private static int static_count;
final void static_display(){
for(int i=0; i< 1000000; i++){
Object obj = new Object();
}
System.out.println("Static method called"+static_count+"times");
}
public void dynamic_display(){
System.out.println("implemented in child");
}
}
class child extends parent{
private static int dynamic_count;
public void dynamic_display(){
for(int i=0; i< 1000000; i++){
Object obj = new Object();
}
System.out.println("dynamic method called"+dynamic_count+"times");
}
}
class sample{
public static void main(String args[]){
parent pnt= new parent();
parent pnt2=new child();
//static binding
long startTime = System.nanoTime();
pnt.static_display();
long elapsedTime = System.nanoTime() - startTime;
System.out.println("Total execution time for static binding in millis: "
+ elapsedTime/1000000);
//dynamic binding
long startTime2 = System.nanoTime();
pnt2.dynamic_display();
long elapsedTime2 = System.nanoTime() - startTime2;
System.out.println("Total execution time for dynamic binding in millis: "
+ elapsedTime2/1000000);
}
}
当执行该代码我得到了以下的答案,
Static method called0times
Total execution time for static binding in millis: 11
dynamic method called0times
Total execution time for dynamic binding in millis: 9
只考虑执行时间的result.i试图找到静态和动态绑定方法执行的时间,但根据我的回答,动态绑定比静态绑定更快。这是可能的。我在任何地方都错了。
这种基准是没有意义的。 –
你的方法可以使用改进。先打电话给他们几百次,然后放弃时间。然后按顺序交替调用它们:一个不是1000000,另一个是1000000;但100万(第一个,然后是其他)。 – CPerkins
尝试以相反的顺序调用它们,您可能会获得“精彩”结果。 – Vic