大程序段分成小程序?qū)憰?huì)變慢嗎??

科技 未結(jié) 7 1628
SXR201708
SXR201708 2023-05-04 21:01

寫java代碼的時(shí)候突然想到的奇怪問(wèn)題:
有一個(gè)函數(shù)很大,所以把一個(gè)大程序分成好多個(gè)小邏輯很正常,比如這樣的

public void 把大象關(guān)進(jìn)冰箱(大象){ 檢查大象狀態(tài); 檢查冰箱狀態(tài); 打開(kāi)冰箱; 檢查冰箱大??; 把大象放進(jìn)去; 檢查異常 關(guān)上冰箱; 清除中間數(shù)據(jù); }

變成下邊這樣:

public void 把大象關(guān)進(jìn)冰箱(大象){ 打開(kāi)冰箱(); 把大象放進(jìn)冰箱(); 關(guān)上冰箱(); } protect 冰箱 打開(kāi)冰箱(){ ... } protect boolean 把大象放進(jìn)冰箱(){ ... } protect 冰箱 關(guān)上冰箱(){ ... }

這種方式大函數(shù)調(diào)小函數(shù)(向上邊這樣)的方式會(huì)讓程序在jvm上跑的速度變慢嗎?不知道我描述的清楚嗎?

相關(guān)標(biāo)簽:
7條回答
  • 2023-05-04 21:45

    不過(guò)在 Haskell 里面函數(shù)調(diào)用幾乎是 0 成本的,所以函數(shù)粒度可以寫的特別小。

    0 討論(0)
  • 會(huì),因?yàn)閏ontext切換了,不過(guò)這種一般忽略,得保證代碼可讀性

    0 討論(0)
  • 2023-05-04 21:53

    你說(shuō)的,這些是不定的,因?yàn)閷?duì)于程序的優(yōu)化問(wèn)題本質(zhì)上是一個(gè)不可判定的問(wèn)題。舉個(gè)例子,如果從調(diào)用的角度而言,好像是增加了開(kāi)銷,但如果另一個(gè)方面,我們可以把程序分解成很多的線程進(jìn)行執(zhí)行,可能速度又會(huì)加快,而且,變成小代碼了,cache的優(yōu)化可能會(huì)使其加快,(這個(gè)要取決于你的循環(huán)結(jié)構(gòu)體),有很多因素會(huì)影響你的代碼運(yùn)行,但當(dāng)前,是以程序員的開(kāi)發(fā)為核心進(jìn)行優(yōu)化,也就是怎么讓程序員更有工作效率,怎么來(lái)。分解成小代碼,顯然是有利于程序員開(kāi)發(fā),從這個(gè)角度說(shuō),你其實(shí)已經(jīng)優(yōu)化了代碼了。

    0 討論(0)
  • 2023-05-04 21:54

    方法的調(diào)用是有成本的,但是其對(duì)性能的影響可以忽略。值得一提的是,Java編譯器幾乎不會(huì)對(duì)這些調(diào)用進(jìn)行優(yōu)化,但是JVM在運(yùn)行時(shí)會(huì)去分析,然后選擇性將一些方法調(diào)用進(jìn)行內(nèi)聯(lián),以達(dá)到節(jié)省開(kāi)銷的目的。程序員在非極端要求性能的情形下不必關(guān)心這些細(xì)節(jié)。

    0 討論(0)
  • 2023-05-04 21:57

    可能會(huì)變得慢,但是不是關(guān)鍵。關(guān)鍵是你的思路和代碼實(shí)現(xiàn)過(guò)程是不是最優(yōu)。

    0 討論(0)
  • 2023-05-04 22:02

    所以C++里有內(nèi)聯(lián)函數(shù)。因?yàn)楹瘮?shù)調(diào)用會(huì)復(fù)制參數(shù),使用堆棧和代碼跳轉(zhuǎn)。。。。

    0 討論(0)
提交回復(fù)
最新問(wèn)題
星漢燦爛更新 1
星漢燦爛一周幾更新一次 1
通輸卵管后多久能同房 1
買了投影儀有后悔的嗎? 5
小米手機(jī)有哪些型號(hào),最好詳細(xì)一點(diǎn)! 5
輸卵管阻塞如何醫(yī)治 1
醫(yī)師不主張打的默沙東九價(jià)hpv疫苗是哪個(gè)國(guó)家進(jìn)口的? 1
天津的老影片院有哪些? 9
盆底肌松弛怎么辦 1
為啥麒麟芯片和聯(lián)發(fā)科的芯片看視頻解碼不行,更耗電? 9
猜你喜歡
試管嬰兒檢查身體多久才能得結(jié)果-試管嬰兒做的檢查有效期多久
梅州第三代試管嬰兒醫(yī)院哪家好?
梅州私人機(jī)構(gòu)做試管費(fèi)用一般多少!去哪里好!
成都哪家醫(yī)院做三代試管好??jī)r(jià)格一覽!
試管檢查需要在月經(jīng)期間做什么嗎試管經(jīng)期檢查需要空腹嗎!都包含哪些項(xiàng)目!
打了降調(diào)針?lè)艞壴嚬芏嗑脕?lái)大姨媽能自然懷孕?報(bào)價(jià)數(shù)據(jù)公布!
試管嬰兒促排期間漏尿正常嗎是什么原因造成的呢?有必要打嗎?
貴陽(yáng)私人機(jī)構(gòu)做試管醫(yī)院收費(fèi)多少錢!內(nèi)附價(jià)格對(duì)比!
東莞試管生寶寶的費(fèi)用貴嗎!費(fèi)用大概多少!
試管移植前可以同房嗎!讓您心里有底!
熱門文章
太原做試管私立的好還是公立的好?附醫(yī)院名單
陜西做試管第三代得花多少費(fèi)用?費(fèi)用包含哪些?
北京市第三代試管嬰兒醫(yī)院排行榜一覽!
2025年西安未婚做試管的機(jī)構(gòu)名單一覽
2025年石家莊試管嬰兒醫(yī)院排行榜,比較新十大試管醫(yī)院出爐!
國(guó)內(nèi)人如何去泰國(guó)做試管?費(fèi)用如何?
泰國(guó)公立試管嬰兒醫(yī)院排名前十有哪些?你知道幾家?
深圳私立試管醫(yī)院排名名單公布,醫(yī)生幫你分析各醫(yī)院優(yōu)勢(shì)
泰國(guó)試管嬰兒攻略:泰國(guó)試管詳細(xì)過(guò)程是什么?
泰國(guó)三代試管嬰兒大概費(fèi)用詳情
熱榜精選!山西人工授精哪家好(山西人工授精費(fèi)用)
【全新公布】菏澤三代試管嬰兒需要多少錢,一次能夠成功嗎
“公開(kāi)揭曉”[基礎(chǔ)卵泡23個(gè)]基礎(chǔ)卵泡23個(gè)促排只有5個(gè)正不正常
驚訝|徐州三大助孕機(jī)構(gòu)排名榜,醫(yī)院要怎么選
生殖科普:女生做試管嬰兒成功率多少_女人做試管成功率
試管三代流程大概得多長(zhǎng)時(shí)間完成
如何選擇泰國(guó)試管嬰兒醫(yī)院
南京試管嬰兒醫(yī)院推薦,這幾家服務(wù)好、成功率高
北京東方醫(yī)院試管嬰兒費(fèi)用參考,年齡越大花費(fèi)越多
下半泰國(guó)第三代試管嬰兒費(fèi)用清單
南昌十大試管醫(yī)院公布,費(fèi)用比單胎貴!
江蘇民營(yíng)機(jī)構(gòu)做試管嬰兒要多少錢?為你貼心籌算!
第三代試管多少錢!附費(fèi)用清單分享!
武漢協(xié)和醫(yī)院如何做試管嬰兒!幫你解答疑惑!
菏澤第三代試管公司排名!5個(gè)點(diǎn)為你解答!
廣告合作方 廣告申請(qǐng)