## 軟件性能
有兩個導致軟件性能差的根本原因。
### **時間復雜度**
解決這個問題很大程度上超出了本文的范圍,一般可以這樣說,時間復雜度是衡量一個程序需要做多少次的比較來實現一個結果。比較數量越多,程序越慢。一個簡單的例子是線性查找與二分查找。線性查找對于同一組數據需要進行更多的比較,因此會慢。時間復雜度的詳細討論,請參考 維基百科文章。
### **空間復雜度**
這是一臺電腦運行你的解決方案需要多少“空間”或內存的測量。需要的內存越多,解決方案就越慢。本文將討論的大多數問題,圍繞空間復雜度。詳細討論,請參閱這里.。
## 為什么引用值要放在堆中,而原始值要放在棧中的問題:
記住一句話:能量是守衡的,無非是時間換空間,空間換時間的問題
堆比棧大,棧比堆的運算速度快,對象是一個復雜的結構,并且可以自由擴展,如:數組可以無限擴充,對象可以自由添加屬性。將他們放在堆中是為了不影響棧的效率。而是通過引用的方式查找到堆中的實際對象再進行操作。
相對于簡單數據類型而言,簡單數據類型就比較穩定,并且它只占據很小的內存。
不將簡單數據類型放在堆是因為通過引用到堆中查找實際對象是要花費時間的,而這個綜合成本遠大于直接從棧中取得實際值的成本。
所以簡單數據類型的值直接存放在棧中。