寫java代碼的時(shí)候突然想到的奇怪問題:
有一個(gè)函數(shù)很大,所以把一個(gè)大程序分成好多個(gè)小邏輯很正常,比如這樣的
public void 把大象關(guān)進(jìn)冰箱(大象){ 檢查大象狀態(tài); 檢查冰箱狀態(tài); 打開冰箱; 檢查冰箱大小; 把大象放進(jìn)去; 檢查異常 關(guān)上冰箱; 清除中間數(shù)據(jù); }
變成下邊這樣:
public void 把大象關(guān)進(jìn)冰箱(大象){ 打開冰箱(); 把大象放進(jìn)冰箱(); 關(guān)上冰箱(); } protect 冰箱 打開冰箱(){ ... } protect boolean 把大象放進(jìn)冰箱(){ ... } protect 冰箱 關(guān)上冰箱(){ ... }
這種方式大函數(shù)調(diào)小函數(shù)(向上邊這樣)的方式會讓程序在jvm上跑的速度變慢嗎?不知道我描述的清楚嗎?
你說的,這些是不定的,因?yàn)閷τ诔绦虻膬?yōu)化問題本質(zhì)上是一個(gè)不可判定的問題。舉個(gè)例子,如果從調(diào)用的角度而言,好像是增加了開銷,但如果另一個(gè)方面,我們可以把程序分解成很多的線程進(jìn)行執(zhí)行,可能速度又會加快,而且,變成小代碼了,cache的優(yōu)化可能會使其加快,(這個(gè)要取決于你的循環(huán)結(jié)構(gòu)體),有很多因素會影響你的代碼運(yùn)行,但當(dāng)前,是以程序員的開發(fā)為核心進(jìn)行優(yōu)化,也就是怎么讓程序員更有工作效率,怎么來。分解成小代碼,顯然是有利于程序員開發(fā),從這個(gè)角度說,你其實(shí)已經(jīng)優(yōu)化了代碼了。