(1)減少編碼
Java的編碼運(yùn)行比較慢是Java的-大硬傷, 在很多場(chǎng)景下只要涉及字符串的操作(如輸人輸出操作、1O操作)都比較耗CPU資源,不管它是磁盤1O還是網(wǎng)絡(luò)I/O,因?yàn)槎夹枰獙⒆址D(zhuǎn)換成字節(jié),而這個(gè)轉(zhuǎn)換必須編碼。因此,減少編碼就可以大大提升性能。那么如何才能減少編碼呢?例如,在網(wǎng)頁輸出時(shí)可以直接進(jìn)行流輸出,即用resp. getOutpusStream0)寫數(shù)據(jù),把一些靜態(tài)的數(shù)據(jù)提前轉(zhuǎn)化成byte, 等到真正往外寫的時(shí)候再直接用OutputStream(寫, 就可以減少靜態(tài)數(shù)據(jù)的編碼轉(zhuǎn)換。此外,很多存儲(chǔ)系統(tǒng)直接存儲(chǔ)成字節(jié)也是為了減少字符的編碼。
(2)使用局部變量
在很多情況下,程序員為了更方便地一次處理一個(gè)請(qǐng)求, 一般會(huì)創(chuàng)建一-堆對(duì)象,再把這些對(duì)象一直傳遞下去,直到請(qǐng)求執(zhí)行完成,才會(huì)銷毀對(duì)象。這種操作會(huì)導(dǎo)致對(duì)象長(zhǎng)時(shí)間不能回收,降低內(nèi)存的使用率,所以要鼓勵(lì)更多地使用局部變量。例如,調(diào)用方法時(shí)傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時(shí)變量都保存在棧中,這樣速度較快;其他變量像靜態(tài)變量、實(shí)例變量等,都在堆中創(chuàng)建速度較慢。棧中創(chuàng)建的變量,隨著方法的運(yùn)行結(jié)束,這些內(nèi)容就沒有了也不需要額外的垃圾回收。
(3)減少方法調(diào)用
經(jīng)??吹揭恍┐a如ob.getXXX0,它的作用只不過是獲取某個(gè)變量對(duì)應(yīng)的值,但是在一段代碼中卻需要多次調(diào)用一這種操作完 全沒有必要,可以把這個(gè)方法調(diào)用的返回結(jié)果用一個(gè)局部變量保存下來,然后直接用這個(gè)局部變量就可以了,這樣能減少方法調(diào)用的次數(shù)(因?yàn)槊恳淮畏椒ㄕ{(diào)用JVM都要?jiǎng)?chuàng)建方法棧)。其他一些經(jīng)驗(yàn)如下。
●把對(duì)象作為HashMap的key;
●web.xml配置版本信息可以減少啟動(dòng)時(shí)annotation 的掃描時(shí)間;
●Logger創(chuàng)建沒有使用static修飾符導(dǎo)致線程阻塞;
●少用Thread.getStackTraceO;
●網(wǎng)站建設(shè)正則運(yùn)算盡量Cache。
本文地址:http://www.khwajamoinuddinchishty.com//article/4474.html