大部分人需要他們的系統運行得更快,那么從哪里開始呢?大部分profiler工具都有內存跟蹤 CPU跟蹤,既然我們想讓我們的程序跑得更快,那當然應該是盯著CPU了,錯,首要法則是應該盯著內存,是內存中對象分配。
你首先應該是盡可能地降低對象分配,雖然我們知道對象分配非常快,那么為什么這么快還會拖慢我們的應用呢?為什么我們需要最小化我們的對象分配呢?
1.對象分配將壓力加在了垃圾回收器,因為有更多對象是短生命的,你的垃圾回收器就工作得越多,這樣就會導致系統減慢。
2.它會填滿你的CPU緩存,因為垃圾回收強迫它們flush,將stack推入更高的L2和L3緩存,,然后推入主內存來獲取數據,看看下面的各種設備時間延遲圖,即使對象分配很快,也會引起Cache丟失,浪費很多CPU循環,降低了程序速度。
3.首先從容易的開始做,通過最容易的是降低分配,比如使用緩存,改變分配可以完全改變你應用程序的性能,比任何算法的改變都效果顯著,后者有可能是浪費時間。
4.Profiler會撒謊,在CPU跟蹤上也許Profiler會搞錯,但是關于對象分配就不會了。
5.高的對象分配通常是代碼壞味道,超過一定限度的對象分配會導致算法問題。