計算幀速率

2021-05-24 13:32:48 字數 1258 閱讀 7206

若文中有誤,請告知.十分感謝.一起加油.

在測試軟體中,我們經常需要檢視程式的渲染速度是否合理,所以,我們就有必要記錄一下程式在大於等於1秒的持續呼叫某函式的情況       下,需要記錄下該函式到底被呼叫了多少次,以此來反饋幀速率。為了實現這個目的,我們需要這樣子做:

實現思路:

1、首先記錄下程式在一開始進入while迴圈的時候,並且沒有響應任何事件的時候,需要儲存一下當前的時間值a。然後當程式             再次執行到該處時又得到了乙個當前程式的執行時b。因此b-a,就是程式再次路過沒有響應事件的時間呼叫差值c

2、再乙個我們需要乙個函式來專門的統計幀速率,在準備這個函式之前呢,我們需要有兩個重要的計數器:

(1)計算時間差的計數器

static float alltimes

(2)計算總幀速率的計數器        static int framecounts

這是計算幀速率最關鍵的兩個變數. ok,由於c會不停的傳入到幀速率函式中,且時間差alltimes+=c, framecounts++

解釋:有的人認為,當程式走到統計幀速率函式的時候,意味著就可以計算幀速率了,其實不然,因為當今的cpu執行速度

太快了,這個函式在一秒內會被呼叫數不清的次數,至少我是數不過來呵呵. 還有就是由於該幀速率函式在1秒內會被不停          呼叫n次,所以傳入的值絕對不會超過1秒,除非你的機子已經爛的不行了。所以,我們需要統計出,在一秒內,我們的程                           序到底呼叫了多少次,所以就有了我們的framecounts++;而後,我們需要累加這些短的不能再短的時間,直到攢的這                           些碎時間達到一秒或者稍微超過點,這時候,我們才能在一秒內,平均統計下該函式的呼叫速率:

我們用float fps儲存: fps = (float)(framecounts / alltimes); 這樣我們就得到了我們想要的幀速率。

再乙個,就是計算出來後,我們總不能除錯檢視吧,所以,我們需要把它列印到螢幕上,怎麼實現字型這塊就不說                                了,因為fps是乙個float型的,我們不能直接列印,需要將其轉換成字串形式,好吧那就定義成char陣列吧:

char fps[9];

利用c語言格式化一下:sprintf( fps, "%f", fps );

fps[8] = "/0";

ok,轉換完成,這時候你就可以直接列印到螢幕了。

最後乙個你需要收尾:將兩個計數器歸0。

看下效果吧,呵呵.

寬頻速率計算

mbps代表每秒傳輸1,048,576位元 該縮寫用來描述資料 傳輸速度。例如 4mbps 每秒鐘傳輸4m位元 一般頻寬1m頻寬單位是bit s,也就是1m位元流 例如 1mbps 每秒鐘傳輸1m位元,要注意單位,1m位元不是1m位元組。1個位元組 8個位,也就是1byte 8bit 由於在傳輸過程...

網路傳輸速率計算

最近在做數碼電視epg si資訊傳送時發現有的儀器計算碼流是按千進製計數的,如100mbps位元速率轉換後可變成 100 000 000bps。經過一番的資料查詢,得出如下的幾種網路傳輸速率計算方法。2.計算內網的傳輸速度 經常有人抱怨內網的傳輸的速度慢,那麼真實情況下的10 100mbps網絡卡的...

qam調製速率計算

資料傳輸速率 又稱位元速率 位元率或資料頻寬 速率 描述通訊中每秒傳送資料 的位元數,單位是bps。波特率 調製速率,符號率 描述資料訊號對模擬載波調製過程中,載波每秒中變化的數值。資料進行遠距離傳送時,將資料訊號先調製在載波上傳送,如qpsk 各種qam調製等,在接收端再通過解調得到資料訊號。調製...