性能測試從零開始——LoadRunner入門(四)[1] 性能測試工具
1.1.5 軟件人員眼里的軟件性能
用戶恨不能讓軟件有無限的性能,但作為軟件技術人員,我們需清楚地認識到,那種理想化的要求是不可能的。在軟件性能方案中,沒有什么萬能鑰匙,軟件性能方案充滿了辯證的各種矛盾。每種方案和方法幾乎都有利有弊。只有把握設計系統的具體環境,明確設計目標,具體問題具體分析,合理平衡各種矛盾,牢牢抓住主要矛盾,才能產生出優化的軟件系統性能方案。
在上面的分析中,我們得知軟件性能是軟件運行空間和時間綜合考慮的解決方案。那么其實滿足用戶的性能需求,只有以下幾種方案:
1.消除軟件對空間和時間不必要的浪費
一個最明顯的例子就是內存泄漏問題,它被開發人員看做是大忌。
嚴格地說,內存泄漏應該屬于軟件程序設計的一種缺陷,該缺陷直接導致了程序在運行過程中無法釋放不再需要的內存空間,從而造成內存資源浪費,嚴重的會造成無可用內存,導致系統崩潰。具體來說,當用戶程序在運行過程中需要動態獲得內存時,操作系統總是從堆(heap)上分配相應的空間給應用,分配的結果是將該堆內存的起始地址通過指針返回給應用。正常情況下,使用完這塊內存后,應通過系統調用主動通知操作系統回收這些堆內存以便重用。但是,如果由于設計缺陷導致在某些情況下程序沒有主動地通知到操作系統,而后應用又失去了對這塊內存的引用時,則該堆內存塊將成為既不受程序控制,又不能被系統回收重用的“孤兒”內存,這便是我們所指的內存泄漏。
案例1
void foo( )
{
char *str;
str = (char*)malloc(32*sizeof(char));
strcpy(str, "hello world");
return;
/* str所指向的32個字節的內存沒有被釋放,當foo()返回時造成內存泄漏 */
}
解決:C語言中malloc和free函數要配對使用。
案例2
void foo()
原文轉自:http://www.anti-gravitydesign.com