写java代码的时候突然想到的奇怪问题:有一个函数很大,所以把一个大程序分成好多个小逻辑很正常,比如这样的public void 把大象关进冰箱(大象){    检查大象状态;    检查冰箱状态;    打开冰箱;    检查冰箱大小;    把大象放进去;    检查异常    关上冰箱;    清除中间数据;}变成下边这样:public void 把大象关进冰箱(大象){    打开冰箱();    把大象放进冰箱();    关上冰箱();}protect 冰箱 打开冰箱(){        ...}protect boolean 把大象放进冰箱(){        ...}protect 冰箱 关上冰箱(){        ...}这种方式大函数调小函数(向上边这样)的方式会让程序在jvm上跑的速度变慢吗?不知道我描述的清楚吗?
                    
                    
                4 回答
 
                    
                    
                            千巷猫影
                            
                                
                            
                        
                        
                                                
                    TA贡献1829条经验 获得超7个赞
你说的,这些是不定的,因为对于程序的优化问题本质上是一个不可判定的问题。
举个例子,如果从调用的角度而言,好像是增加了开销,但如果另一个方面,我们可以把程序分解成很多的线程进行执行,可能速度又会加快,而且,变成小代码了,cache的优化可能会使其加快,(这个要取决于你的循环结构体),有很多因素会影响你的代码运行,但当前,是以程序员的开发为核心进行优化,也就是怎么让程序员更有工作效率,怎么来。分解成小代码,显然是有利于程序员开发,从这个角度说,你其实已经优化了代码了。
 
                    
                    
                            素胚勾勒不出你
                            
                                
                            
                        
                        
                                                
                    TA贡献1827条经验 获得超9个赞
方法的调用是有成本的,但是其对性能的影响可以忽略。
值得一提的是,Java编译器几乎不会对这些调用进行优化,但是JVM在运行时会去分析,然后选择性将一些方法调用进行内联,以达到节省开销的目的。程序员在非极端要求性能的情形下不必关心这些细节。
- 4 回答
- 0 关注
- 454 浏览
添加回答
举报
0/150
	提交
		取消
	
 
                    