發(fā)布時(shí)間:2022-03-12 14:30:09來源:魔方格
能提高Java代碼效率的技巧有這些:1.盡量指定類、方法的final修飾符;2.盡量重用對象;3.盡可能使用局部變量;4.及時(shí)關(guān)閉流;5.盡量減少對變量的重復(fù)計(jì)算。
1、盡量指定類、方法的final修飾符
帶有final修飾符的類是不可派生的。在Java核心API中,有許多應(yīng)用final的例子,例如java.lang.String,整個(gè)類都是final的。為類指定final修飾符可以讓類不可以被繼承,為方法指定final修飾符可以讓方法不可以被重寫。
如果指定了一個(gè)類為final,則該類所有的方法都是final的。Java編譯器會尋找機(jī)會內(nèi)聯(lián)所有的final方法,內(nèi)聯(lián)對于提升Java運(yùn)行效率作用重大,具體參見Java運(yùn)行期優(yōu)化。 此舉能夠使性能平均提高50% 。
2、盡量重用對象
特別是String對象的使用,出現(xiàn)字符串連接時(shí)應(yīng)該使用StringBuilder/StringBuffer代替。
由于Java虛擬機(jī)不僅要花時(shí)間生成對象,以后可能還需要花時(shí)間對這些對象進(jìn)行垃圾回收和處理,因此,生成過多的對象將會給程序的性能帶來很大的影響。
3、盡可能使用局部變量
調(diào)用方法時(shí)傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時(shí)變量都保存在棧中速度較快,其他變量,如靜態(tài)變量、實(shí)例變量等,都在堆中創(chuàng)建,速度較慢。另外,棧中創(chuàng)建的變量,隨著方法的運(yùn)行結(jié)束,這些內(nèi)容就沒了,不需要額外的垃圾回收。
4、及時(shí)關(guān)閉流
Java編程過程中,進(jìn)行數(shù)據(jù)庫連接、I/O流操作時(shí)務(wù)必小心,在使用完畢后,及時(shí)關(guān)閉以釋放資源。因?yàn)閷@些大對象的操作會造成系統(tǒng)大的開銷,稍有不慎,將會導(dǎo)致嚴(yán)重的后果。
5、盡量減少對變量的重復(fù)計(jì)算
明確一個(gè)概念,對方法的調(diào)用,即使方法中只有一句語句,也是有消耗的,包括創(chuàng)建棧幀、調(diào)用方法時(shí)保護(hù)現(xiàn)場、調(diào)用方法完畢時(shí)恢復(fù)現(xiàn)場等。