性能優化的首要法則

大部分人需要他們的系統運行得更快,那么從哪里開始呢?大部分profiler工具都有內存跟蹤 CPU跟蹤,既然我們想讓我們的程序跑得更快,那當然應該是盯著CPU了,錯,首要法則是應該盯著內存,是內存中對象分配。
  你首先應該是盡可能地降低對象分配,雖然我們知道對象分配非常快,那么為什么這么快還會拖慢我們的應用呢?為什么我們需要最小化我們的對象分配呢?
1.對象分配將壓力加在了垃圾回收器,因為有更多對象是短生命的,你的垃圾回收器就工作得越多,這樣就會導致系統減慢。
2.它會填滿你的CPU緩存,因為垃圾回收強迫它們flush,將stack推入更高的L2和L3緩存,,然后推入主內存來獲取數據,看看下面的各種設備時間延遲圖,即使對象分配很快,也會引起Cache丟失,浪費很多CPU循環,降低了程序速度。


3.首先從容易的開始做,通過最容易的是降低分配,比如使用緩存,改變分配可以完全改變你應用程序的性能,比任何算法的改變都效果顯著,后者有可能是浪費時間。
4.Profiler會撒謊,在CPU跟蹤上也許Profiler會搞錯,但是關于對象分配就不會了。
5.高的對象分配通常是代碼壞味道,超過一定限度的對象分配會導致算法問題。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第一章 簡介 J2SE平臺的一大優勢是它的自動化內存管理,避免了開發者去面對內存管理的復雜性。 本文以Sun J2...
    tianyiliusha閱讀 1,025評論 0 1
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,366評論 11 349
  • 被文同時發布在CSDN上,歡迎查看。 APP內存的使用,是評價一款應用性能高低的一個重要指標。雖然現在智能手機的內...
    大圣代閱讀 4,854評論 2 54
  • 1.一些概念 1.1.數據類型 Java虛擬機中,數據類型可以分為兩類:基本類型和引用類型。基本類型的變量保存原始...
    落落落落大大方方閱讀 4,576評論 4 86
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,211評論 30 472