軟體性能

軟體性能

軟體性能是軟體的一種非功能特性,它關注的不是軟體是否能夠完成特定的功能,而是在完成該功能時展示出來的及時性。由於感受軟體性能的主體是人,不同的人對於同樣的軟體能有不同的主觀感受,而且不同的人對於軟體性能關心的視角也不同。由於目前網路套用非常普遍,因此下面將介紹網路套用軟體性能的指標和軟體性能的視角。

基本介紹

  • 中文名:軟體性能
  • 主體:人
  • 關注:完成該功能時展示出來的及時性
  • 指標: 回響時間
  • 吞吐量:單位時間內處理請求的數量
指標,各界視角,用戶視角,管理員視角,開發人員視角,

指標

回響時間
回響時間是指系統對請求作出回響的時間。直觀上看,這個指標與人對軟體性能的主觀感受是非常一致的,因為它完整地記錄了整個計算機系統處理請求的時間。由於一個系統通常會提供許多功能,而不同功能的處理邏輯也千差萬別,因而不同功能的回響時間也不盡相同,甚至同一功能在不同輸入數據的情況下回響時間也不相同。所以,在討論一個系統的回響時間時,人們通常是指該系統所有功能的平均時間或者所有功能的最大回響時間。當然,往往也需要對每個或每組功能討論其平均回響時間和最大回響時間。
對於單機的沒有並發操作的套用系統而言,人們普遍認為回響時間是一個合理且準確的性能指標。需要指出的是,回響時間的絕對值並不能直接反映軟體的性能的高低,軟體性能的高低實際上取決於用戶對該回響時間的接受程度。對於一個遊戲軟體來說,回響時間小於100毫秒應該是不錯的,回響時間在1秒左右可能屬於勉強可以接受,如果回響時間達到3秒就完全難以接受了。而對於編譯系統來說,完整編譯一個較大規模軟體的原始碼可能需要幾十分鐘甚至更長時間,但這些回響時間對於用戶來說都是可以接受的。
系統回響時間和套用延遲時間
雖然軟體性能指標本身只涉及軟體性能的度量,但考慮到軟體性能測試的主要目的是測試和改善所開發軟體的性能,對於複雜的網路化的軟體而言,簡單地用回響時間進行度量就不一定合適了。
考慮一個普通的網站系統。開發該網站系統時,軟體開發實際上只集中在伺服器端,因為客戶端的軟體是標準的瀏覽器。雖然用戶看到的回響時間時使用特定客戶端計算機上的特定瀏覽器瀏覽該網站的回響時間,但是在討論軟體性能時更關心所開發網站軟體本身的“回響時間”。也就是說,可以把用戶感受到的回響時間劃分為“呈現時間”和“系統回響時間”,前者是指客戶端的瀏覽器在接收到網站數據時呈現頁面所需的時間,而後者是指客戶端接收到用戶請求到客戶端接收到伺服器發來的數據所需的時間。顯然,軟體性能測試更關心“系統回響時間”,因為“呈現時間”與客戶端計算機和瀏覽器有關,而與所開發的網站軟體沒有太大的關係。
如果仔細分析這個例子,還可以把“系統回響時間”進一步分解為“網路傳輸時間”和“套用延遲時間”,其中前者是指數據(包括請求數據和回響數據)在客戶端和伺服器端進行傳輸的時間,而後者是指網站軟體實際處理請求所需的時間。類似的,軟體性能測試也更關心“套用延遲時間”。實際上,這種分解還可以繼續下去,如果該網站系統使用了資料庫,我們可以把“資料庫延遲時間”分離出來,如果該網站系統使用了中間件,還可以把“中間件延遲時間”也分離出來。
以上的時間分解實際上有兩方面的目的。首先,人們通常希望把與所開發軟體直接相關的延遲時間和與所開發軟體不相關的延遲時間分離開,因為改善前者往往需要開發人員修改程式代碼,而改善後者不需要開發人員修改代碼,很多時候,開發人員對後者甚至是無能為力的。其次,詳細的分解有助於開發人員分析哪些部分是影響軟體性能的主要因素,以便於實時性能改善方案。
吞吐量
吞吐量是指系統在單位時間內處理請求的數量。對於無並發的套用系統而言,吞吐量與回響時間成嚴格的反比關係,實際上此時吞吐量就是回響時間的倒數。前面已經說過,對於單用戶的系統,回響時間(或者系統回響時間和套用延遲時間)可以很好地度量系統的性能,但對於並發系統,通常需要用吞吐量作為性能指標。
對於一個多用戶的系統,如果只有一個用戶使用時系統的平均回響時間是t,當有你n個用戶使用時,每個用戶看到的回響時間通常並不是n×t,而往往比n×t小很多(當然,在某些特殊情況下也可能比n×t大,甚至大很多)。這是因為處理每個請求需要用到很多資源,由於每個請求的處理過程中有許多步驟難以並發執行,這導致在具體的一個時間點,所占資源往往並不多。也就是說在處理單個請求時,在每個時間點都可能有許多資源被閒置,當處理多個請求時,如果資源配置合理,每個用戶看到的平均回響時間並不隨用戶數的增加而線性增加。實際上,不同系統的平均回響時間隨用戶數增加而增長的速度也不大相同,這也是採用吞吐量來度量並發系統的性能的主要原因。一般而言,吞吐量是一個比較通用的指標,兩個具有不同用戶數和用戶使用模式的系統,如果其最大吞吐量基本一致,則可以判斷兩個系統的處理能力基本一致。
並發用戶數
並發用戶數是指系統可以同時承載的正常使用系統功能的用戶的數量。與吞吐量相比,並發用戶數是一個更直觀但也更籠統的性能指標。實際上,並發用戶數是一個非常不準確的指標,因為用戶不同的使用模式會導致不同用戶在單位時間發出不同數量的請求。以網站系統為例,假設用戶只有註冊後才能使用,但註冊用戶並不是每時每刻都在使用該網站,因此具體一個時刻只有部分註冊用戶同時線上,線上用戶就在瀏覽網站時會花很多時間閱讀網站上的信息,因而具體一個時刻只有部分線上用戶同時向系統發出請求。這樣,對於網站系統我們會有三個關於用戶數的統計數字:註冊用戶數、線上用戶數和同時發請求用戶數。由於註冊用戶可能長時間不登入網站,使用註冊用戶數作為性能指標會造成很大的誤差。而線上用戶數和同時發請求用戶數都可以作為性能指標。相比而言,以線上用戶作為性能指標更直觀些,而以同時發請求用戶數作為性能指標更準確些。
資源利用率
資源利用率反映的是在一段時間內資源平均被占用的情況。對於數量為1的資源,資源利用率可以表示為被占用的時間與整段時間的比值;對於數量不為1的資源,資源利用率可以表示為在該段時間內平均被占用的資源數與總資源數的比值。

各界視角

用戶視角

對用戶而言,性能就是回響時間。用戶甚至不關心回響時間中哪些是軟體造成的,哪些是硬體造成的。但用戶感受到的回響時間既有客觀成分,也有主觀成分,甚至是心理因素 。

管理員視角

管理員需要使用軟體提供的管理功能等手段來方便普通用戶使用。這類用戶首先關注普通用戶感受到的軟體性能。其次,管理員需要進一步關注如何利用管理功能進行性能調優

開發人員視角

開發人員的視角與管理員的視角基本一致,但開發人員需要更深入地關注軟體性能。在開發過程中,開發人員希望能夠儘可能地開發出高性能的軟體

相關詞條

熱門詞條

聯絡我們