App下載

程序中提升幾毫秒、節(jié)省幾KB的內(nèi)存有必要嗎?

撈月亮的漁夫 2024-09-11 08:00:00 瀏覽數(shù) (481)
反饋

今天看到一個話題:程序中節(jié)省幾KB的內(nèi)存有必要嗎?

有人說:“我在寫程序的時候,更改一個判斷語句,會提升幾毫秒,換一種方法會節(jié)省幾KB,這些有必要嗎?”

看到這個問題,我的第一反應(yīng)是——安迪-比爾定律。


安迪-比爾定律


近年來,隨著科技的飛速發(fā)展,手機(jī)、電腦等電子設(shè)備的硬件性能不斷提升,內(nèi)存容量也越來越大。

然而,許多用戶卻發(fā)現(xiàn),設(shè)備在使用一段時間后,性能開始下降,甚至變得卡頓。

這究竟是為什么呢?難道是硬件性能退化了嗎?

其實,這背后隱藏著一個有趣的定律——安迪-比爾定律。

安迪-比爾定律是對IT產(chǎn)業(yè)中軟件和硬件升級換代關(guān)系的一個概括,其原話是“Andy gives, Bill takes away.(安迪提供什么,比爾拿走什么。)”。

安迪指的是英特爾前CEO安迪·格魯夫,比爾指的是微軟前任CEO比爾·蓋茨。

這句話形象地揭示了硬件和軟件之間相互制約又相互促進(jìn)的微妙關(guān)系,它的含義是,硬件性能的提升,很快就被軟件的不斷更新和膨脹所消耗殆盡。


硬件升級,軟件膨脹  


想象一下,你剛?cè)胧至艘豢钭钚驴畹闹悄苁謾C(jī),它擁有強(qiáng)大的處理器和充足的內(nèi)存。

你興致勃勃地下載了各種應(yīng)用程序,并期待著流暢的使用體驗。

然而,隨著時間的推移,你發(fā)現(xiàn)手機(jī)越來越卡頓,甚至出現(xiàn)應(yīng)用程序崩潰的情況。

這并非是手機(jī)硬件性能退化所致,而是因為軟件的不斷更新和膨脹,導(dǎo)致對硬件資源的占用越來越大。

以手機(jī)游戲為例,當(dāng)一款游戲剛發(fā)布時,它的體積相對較小,運行流暢,不會占用太多硬件資源。

然而,隨著游戲開發(fā)商不斷更新游戲內(nèi)容,添加新的功能和特效,游戲的體積也會隨之膨脹,對手機(jī)的內(nèi)存和處理器性能要求也越來越高。

那么為什么軟件可以吃掉硬件的性能呢?

造成這種現(xiàn)象的原因,除了軟件本身的更新迭代之外,更重要的是,現(xiàn)在的應(yīng)用程序開發(fā)者,幾乎很難再有節(jié)省幾KB內(nèi)存的意識了。

在嵌入式或芯片開發(fā)領(lǐng)域,程序員需要盡可能地節(jié)省內(nèi)存空間,因為芯片的片上存儲資源非常寶貴,多出幾十KB的存儲,都會有意想不到的系統(tǒng)性能提升。

而在應(yīng)用層開發(fā)領(lǐng)域,例如手機(jī)APP開發(fā),開發(fā)者往往不會過多關(guān)注內(nèi)存占用問題。

因為現(xiàn)在的手機(jī)擁有巨大的存儲空間,幾KB的內(nèi)存節(jié)省對于整體性能的影響微不足道。

開發(fā)者更傾向于追求功能的完善和用戶體驗的提升,而忽視代碼優(yōu)化和內(nèi)存管理。


超級瑪麗:64KB的奇跡  


與現(xiàn)在的應(yīng)用程序相比,早期的游戲開發(fā)者對內(nèi)存管理有著深刻的理解。

以經(jīng)典游戲超級瑪麗為例,這款游戲包含了豐富的關(guān)卡、劇情、配圖和配樂,但它的總大小僅為64KB!


12


這主要是因為,在超級瑪麗那個年代,芯片上的硬件資源非常有限,游戲開發(fā)者為了節(jié)省內(nèi)存,進(jìn)行了大量的代碼優(yōu)化和圖片復(fù)用優(yōu)化。

例如,游戲中所有的障礙物都是由多個小的正方形圖片拼接而成,而在內(nèi)存中,只存儲了一個正方形圖片,通過不同的排列組合來實現(xiàn)不同的障礙物。



安迪-比爾定律揭示了軟件和硬件之間的相互制約關(guān)系。

軟件的不斷更新和膨脹,會消耗硬件性能的提升,最終導(dǎo)致硬件需要進(jìn)一步升級。

然而,這種現(xiàn)象并非不可避免。如果開發(fā)者能夠更加重視代碼優(yōu)化和內(nèi)存管理,減少軟件膨脹,那么硬件性能的提升就能真正地轉(zhuǎn)化為用戶體驗的提升。

未來,軟件開發(fā)需要更加注重資源節(jié)約和性能優(yōu)化,才能真正實現(xiàn)硬件性能的充分利用,為用戶帶來更流暢、更便捷的使用體驗。


0 人點贊