写java代码的时候突然想到的奇怪问题:
有一个函数很大,所以把一个大程序分成好多个小逻辑很正常,比如这样的
public void 把大象关进冰箱(大象){
检查大象状态;
检查冰箱状态;
打开冰箱;
检查冰箱大小;
把大象放进去;
检查异常
关上冰箱;
清除中间数据;
}
变成下边这样:
public void 把大象关进冰箱(大象){
打开冰箱();
把大象放进冰箱();
关上冰箱();
}
protect 冰箱 打开冰箱(){
...
}
protect boolean 把大象放进冰箱(){
...
}
protect 冰箱 关上冰箱(){
...
}
这种方式大函数调小函数(向上边这样)的方式会让程序在jvm上跑的速度变慢吗?不知道我描述的清楚吗?
方法的调用是有成本的,但是其对性能的影响可以忽略。
值得一提的是,Java编译器几乎不会对这些调用进行优化,但是JVM在运行时会去分析,然后选择性将一些方法调用进行内联,以达到节省开销的目的。程序员在非极端要求性能的情形下不必关心这些细节。