JAVA-性能调优-静态方法代替实例方法
程序员文章站
2024-01-05 21:48:34
...
在Java 中,使用static 关键字描述的方法是静态方法。与静态方法相比,实例方法的调用需
要消耗更多的系统资源,这是因为实例方法需要维护一张类似虚拟函数导向表的结构,这样可以
方便地实现对多态的支持。对于一些常用的工具类方法,我们没有必要对其进行重载,那么我们
可以尝试将它们声明为static,即静态方法,这样有利于加速方法的调用。
1 即谭浩强教授,他编著的《C 程序设计》发行了1100 万册。
第3 章 Java API 调用优化建议 ■ 57
如代码清单3-7 所示,我们分别定义了两个方法,一个是静态方法,一个是实例方法,然后
在main 函数进程里分别调用10 亿次两个方法,计算两个方法的调用总计时间。
代码清单3-7 静态方法示例
要消耗更多的系统资源,这是因为实例方法需要维护一张类似虚拟函数导向表的结构,这样可以
方便地实现对多态的支持。对于一些常用的工具类方法,我们没有必要对其进行重载,那么我们
可以尝试将它们声明为static,即静态方法,这样有利于加速方法的调用。
1 即谭浩强教授,他编著的《C 程序设计》发行了1100 万册。
第3 章 Java API 调用优化建议 ■ 57
如代码清单3-7 所示,我们分别定义了两个方法,一个是静态方法,一个是实例方法,然后
在main 函数进程里分别调用10 亿次两个方法,计算两个方法的调用总计时间。
代码清单3-7 静态方法示例
public static void staticMethod(){ } //实例方法 public void instanceMethod(){ } @Test public static void main(String[] args){ long start = System.currentTimeMillis(); //循环10 亿次,创建静态方法 for(int i=0;i<1000000000;i++){ staticVSinstance.staticMethod(); } System.out.println(System.currentTimeMillis() - start); start = System.currentTimeMillis(); staticVSinstance si1 = new staticVSinstance(); //循环10 亿次,创建实例方法 for(int j=0;j<1000000000;j++){ si1.instanceMethod(); } System.out.println(System.currentTimeMillis() - start);