游戲跑分新視角:細看一秒內幀數變化
毋庸置疑,幾乎所有的游戲硬件測試都采用同一種評估方法,那就是大家公認的FPS(Frames per Second,每秒幀數)。毫無疑問的是,FPS是一個出色的即時性能匯總,表達準確而且簡單易懂。不只是游戲,FPS的概念還常見于我們所熟知電影及電視,比如電影/電視分別以每秒24/30張畫面的速度播放,也就是一秒鐘內在屏幕上連續投射出24/30張靜止畫面,所以播放速率就是24/30FPS,游戲畫面也與之同理。(通常每秒播放24張畫面以上,根據“視覺惰性”,即視覺暫留現象,人眼就認為是連續的。)
當然,關于利用FPS進行測試的爭論一直存在,尤其是我們常見的平均FPS更是受到很多質疑,因為其衡量的太廣泛了。事實上我們也從這些討論中汲取了一些有用的東西并付諸實施,比如在游戲測試的時候同時獲取平均FPS和最低FPS,甚至可能的時候還提供了單位時間內的FPS變化圖表。相比干巴巴的平均FPS,我相信這些信息更能夠幫助讀者更好的理解游戲性能表現。
即便如此,這種方法仍舊有一些明顯的缺點。因為經歷多次的測試之后,我們發現有些時候這些結果和我們的直覺體驗并不完全一致。最根本的問題在于,無論對于電腦時間還是人類視覺感知來說,一秒都太長了。一秒內的平均結果可能會掩蓋一些系統性能突發變化,而這對于游戲體驗來說非常重要。
為了說明,我們先來看兩個例子。雖然經過加工,但這些結果卻是基于我們多年來的游戲測試真實數據。下面的圖表縱軸以毫秒(ms)為單位表示所需要的時間,而橫軸則表示一秒內兩款不同顯卡所提供的一系列幀數。
顯而易見,GPU1在大多數情況下跑得更快,每幀所用的時間較短(絕大多數都在25ms以下),而CPU2要慢一些,因為每幀時間一直穩定在30ms左右。
但是,我們可以看到GPU1在運行這個游戲的時候有一個明顯的問題(假定說是由于驅動里糟糕的顯存管理引起的紋理載入毛病造成的,也可能是硬件方面的原因),那就是其中一幀所耗費的時間出奇的長,幾乎達到了將近500ms,像是被卡在那兒了。如果你是這個游戲的玩家而碰巧遇到這個問題,一瞬間肯定會卡的要死。而如果這個問題經常出現,游戲也就基本不能玩了。
而這方面GPU2就要好了不少,雖然平均FPS可能要比GPU1少,每幀耗費的時間都差不多,并且能夠提供一個持續穩定的游戲畫面輸出。那兩款顯卡的平均FPS到底是多少呢?
可以看到,在我們統計的時間內,兩款GPU的平均FPS幾乎相同。如果就此而言,那么兩款顯卡的性能表現本質上沒有區別。而正是我們使用了平均FPS,才使得GPU1中的一個致命缺陷被掩蓋了起來。
以上只是一小段時間內的反映,如果說GPU1在整個測試中的其它場景也時不時遇到類似的延遲,但耗費時間可能沒有這么大,那整體幀數可能會達到50FPS的樣子,最低幀數也有35FPS。而根據我們傳統的思維,這是一個看起來相當不錯的成績,但是實際游戲體驗的糟糕程度就可想而知了。
回歸到主題,FPS對于性能評估的意義雖然重大,但短板也是明顯的。而解決以上問題最簡單有效的方法就是將單位時間放大細化,就像我們剛才做的那樣,把每幀所耗費的時間獨立呈現。事實上這么做并沒有什么難度,想必那些游戲開發商們已經研習多年。
所以,對于我們自己來說,也是時候轉化一下認知理念了。下面表格里的數據可能會有一些幫助,詳細列舉了部分以毫秒為單位的幀時間(越低越好)所對應的FPS速率,這里的條件是假定完整的統計時間為1秒。這個表已經包含了許多閾值,比如其中16.7ms相當于穩定的60FPS。打個比方來說,目前大多數LCD的的刷新率就是每秒60次(60Hz),所以每次刷新的時間高于16.7ms的閾值就不能提供穩定的畫面輸出。
|
Frame time in milliseconds |
FPS rate |
|
8.3 |
120 |
|
10 |
100 |
|
16.7 |
60 |
|
20 |
50 |
|
25 |
40 |
|
33 |
30 |
|
42 |
24 |
|
50 |
20 |
|
60 |
17 |
|
70 |
14 |
經過以上幾點介紹,下面我們就來看一下實際游戲測試中的一些數據,看看我們能夠從中獲得什么。
關注我們



