性能測試從零開始——LoadRunner入門(四)[2] 性能測試工具
解決:在程序堆上分配內存后,要在使用完后及時釋放,同時避免野指針的產生,比如string1。
原理:內存是軟件運行的重要的空間資源,內存泄漏實際上是浪費了軟件的空間資源。因此,內存泄漏對軟件的性能影響十分重要。
另外,對于程序在時間上的浪費,我們通常是采用優化算法和數據結構的解決策略。
案例3
最近幾年,很多知名軟件公司在招聘軟件測試人員,考察代碼能力的時候,內存泄露和算法優化是經常的試題之一。這說明了用戶對軟件性能的要求越來越嚴格,已經傳遞到了軟件公司。
2.以空間換時間
軟件的高性能并不是憑空產生的,在解決了空間和時間浪費的問題之后,如果用戶還有更高的性能要求,我們軟件人員只好“偷梁換柱”,做一下調整,而這種調整往往是很靈活的。
空間換時間是軟件人員解決性能問題最常見的方法。是在系統功能正常的前提下增大軟件空間開銷的方法來縮減運行的時間。一般的方法有算法調整、并行計算方法、體系結構方法和一些不是“辦法”的辦法。
案例4
一個動態網站服務器總發生CPU耗盡的問題,因此造成給用戶的響應緩慢或者長時間沒有響應,進而引起Server的宕機。經調查分析,網站首頁是個PHP程序,每次用戶訪問都要多次查詢數據庫,也沒有Cache機制,數據庫查詢負荷過高,耗盡CPU。
解決:改寫網站首頁以及部分頻繁訪問的程序,增加Cache機制,減少數據庫訪問。
原理:將常用數據放在服務器的內存中,雖然增加了內存的開銷,但帶來了時間上的優化,對用戶而言,提高了處理速度。
3.以時間換空間 軟件測試
時間換空間的方案解決性能問題的情形比較少。有時會出現在對內存要求十分苛刻的地方,比如嵌入式操作系統中。
案例5
程序設計的要求是不設中間變量,交換兩個變量的值。
我們通常的中間變量的解決方案是:
Void swapOne(int *a, int *b)
{
Int temp;
Temp = *a;
*a = *b;
*b= temp;
}
但這里需要在程序中為temp變量在棧上分配一個空間??刹豢梢圆挥眠@個temp變量呢?
原文轉自:http://www.anti-gravitydesign.com