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