java事务过大影响系统性能吗_Java编程性能优化-影响性能的因素你都知道吗?
1.總是聽(tīng)說(shuō)系統(tǒng)性能咋樣,那我們?yōu)樯兑阅苷{(diào)優(yōu)?有啥意思?
1.1肺腑之言,嘮叨幾句感慨
以前寫(xiě)代碼,一般都是跟著感覺(jué)走,業(yè)務(wù)實(shí)現(xiàn)出來(lái)就行了,至少客戶端可以使用就可以。不管他三七二十一,總之我搞完了.......,三年了,慢慢的接觸到系統(tǒng)中有些要求嚴(yán)格的客戶,終于知道,系統(tǒng)僅僅做出來(lái)還是不夠的,還需要去把他優(yōu)化一下。早期理解的優(yōu)化,就是代碼的注釋啊,減少不必要的變量和參數(shù),減少代碼量盡量簡(jiǎn)潔。沒(méi)想到,系統(tǒng)性能調(diào)優(yōu)還有很多方面可以去做,然而,三年的開(kāi)發(fā)時(shí)間了,才明白這個(gè)重要性。茫茫大海,知識(shí)總是一點(diǎn)一滴積累的,每個(gè)人都為時(shí)不晚,那只是先知和后知的區(qū)別罷了......
1.2.為啥要性能調(diào)優(yōu)?
(1)不經(jīng)過(guò)性能調(diào)優(yōu)和測(cè)試,不知道自己做的系統(tǒng)承受能力有多大,指不定哪天突然服務(wù)器就掛了。
(2)寫(xiě)的代碼有死循環(huán),或者有大量高并發(fā)的時(shí)候,代碼中有復(fù)雜低效率的算法,這樣cpu占用太高了,服務(wù)器可能吼不住,直到奔潰。
(3)性能不好,客戶端或者用戶頁(yè)面等待時(shí)間很長(zhǎng),體驗(yàn)非常差。
(4)如果性能調(diào)優(yōu),使用兩臺(tái)服務(wù)器就可以輕松跑起來(lái)。結(jié)果因?yàn)樾阅懿?#xff0c;給了四臺(tái)服務(wù)器才能部署輕松跑起來(lái)。這個(gè)也是一種浪費(fèi)資源啊。
1.3難不成寫(xiě)代碼時(shí)候就要提心吊膽?什么時(shí)候去優(yōu)化自己的代碼?
(1)其實(shí)在開(kāi)發(fā)初期,真的沒(méi)法整體把握性能,只能在我們編碼的過(guò)程中,使用一些高效率算法,降低鎖的競(jìng)爭(zhēng),還需要盡量減少IO操作。只要注意這些地方,就可以了。
(2)一般項(xiàng)目完成了,進(jìn)入測(cè)試階段。這時(shí)候就是真正開(kāi)始看性能的時(shí)候了。需要我們?nèi)∵M(jìn)行各種測(cè)試和分析。
2.項(xiàng)目完成后,體現(xiàn)性能因素有哪些?
(1)CPU:有復(fù)雜的計(jì)算,或者有死循環(huán),都會(huì)占用特別高的CPU,導(dǎo)致其他資源沒(méi)辦法爭(zhēng)奪到cpu,就會(huì)特別慢。平時(shí)我們電腦也會(huì)卡,與這個(gè)也有關(guān)系。
(2)內(nèi)存:Java通過(guò)jvm對(duì)內(nèi)存進(jìn)行分配管理。jvm通過(guò)堆內(nèi)存存儲(chǔ)java創(chuàng)建的對(duì)象。內(nèi)存一般讀取很快不會(huì)出現(xiàn)啥大問(wèn)題。但是存儲(chǔ)量有限。如果垃圾回收不及時(shí),創(chuàng)建太多的對(duì)象,就會(huì)內(nèi)存溢出泄露。
(3)磁盤(pán)IO:磁盤(pán)存儲(chǔ)大,但是讀取沒(méi)有內(nèi)存快。過(guò)多的操作IO,肯定會(huì)慢。
(4)網(wǎng)絡(luò):網(wǎng)絡(luò)帶寬,決定了數(shù)據(jù)相應(yīng)時(shí)間。這個(gè)大家都知道。
(5)異常:異常拋出后居然會(huì)構(gòu)建異常棧,這個(gè)過(guò)程非常消耗系統(tǒng)性。
(6)數(shù)據(jù)庫(kù):首先數(shù)據(jù)庫(kù)數(shù)據(jù)量大的時(shí)候,讀取涉及到磁盤(pán)IO讀取。這時(shí)候也會(huì)有瓶頸。
(7)鎖競(jìng)爭(zhēng):并發(fā)的時(shí)候,數(shù)據(jù)保持一致,比如一個(gè)線程在寫(xiě)庫(kù)的時(shí)候,肯定是不允許其他線程修改這個(gè)數(shù)據(jù)。這時(shí)候就是用到了鎖。也會(huì)增加系統(tǒng)的開(kāi)銷。
3.衡量性能的指標(biāo)有哪幾個(gè)?
(1)響應(yīng)時(shí)間,肯定是響應(yīng)時(shí)間越短越好,對(duì)吧?
主要是數(shù)據(jù)庫(kù)時(shí)間,服務(wù)端時(shí)間,網(wǎng)絡(luò)時(shí)間,客戶端時(shí)間。每個(gè)環(huán)節(jié)都可能耗費(fèi)時(shí)間。
(2)吞吐量:也就是單位時(shí)間內(nèi),你的系統(tǒng)能處理多少個(gè)事務(wù)。所以吞吐量越大越好,對(duì)吧?
吞吐量主要是磁盤(pán)IO吞吐量(每秒讀寫(xiě)次數(shù))和網(wǎng)絡(luò)吞吐量(傳輸數(shù)據(jù)大小)。
(3)計(jì)算機(jī)資源分配使用率:比如cpu,內(nèi)存,IO等,分配一定要合理。
(4)負(fù)載承受能力:并發(fā)量很大的時(shí)候,看看系統(tǒng)最大能承受多少。這個(gè)如果處理不好,可能導(dǎo)致奔潰。
4.總結(jié)一下上面說(shuō)的
我們?nèi)粘i_(kāi)發(fā)項(xiàng)目,前期編碼過(guò)程中,就要注意算法,邏輯的高效,避免不必要的循環(huán)。避免少操作IO。等到系統(tǒng)編碼完畢進(jìn)入測(cè)試,就要去關(guān)注以上影響和衡量系統(tǒng)因素指標(biāo)。看看那一塊兒的問(wèn)題。進(jìn)行相應(yīng)的優(yōu)化。每次都要和上一次優(yōu)化結(jié)果作比較。每次優(yōu)化一定是有進(jìn)步的。這些個(gè)人的整理,都是我簡(jiǎn)單的了解,可能有更深層次的東西我們還沒(méi)有接觸到,不要緊,慢慢去掌握,慢慢學(xué)。
總結(jié)
以上是生活随笔為你收集整理的java事务过大影响系统性能吗_Java编程性能优化-影响性能的因素你都知道吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java list addall源码_J
- 下一篇: java强制编译通过_强制java使用用