C 呼叫Lua的效能測試

2021-07-04 13:52:32 字數 1585 閱讀 9679

遊戲伺服器經典的架構就是c++和lua的結合,c++開發主體框架,lua實現一些複雜的邏輯。我們都知道lua是一種非常快的語言,但是到底有多塊,我們測試下看看。

c++呼叫lua的效能測試,發現不對的地方望提出。

實驗一:我們使用c++呼叫lua帶8個以上引數的函式,而這個函式裡面什麼也沒有做。我們通過這個實驗能夠簡單地測試出:使用lua虛擬機器和向呼叫棧當中傳入8+個引數和lua取出這些引數的時間。但是其中的引數型別比較多樣,有整形,浮點型,和陣列。實驗的lua函式比較簡單,如下:

function

test

(x1,x2,x3,x4,x5,x6,x7,x8,x9)

end

實驗結果:我們呼叫這個函式1000次所需要的時間在35ms左右,也就是說一次呼叫的時間在0.035ms左右

實驗二:我們使用c++呼叫帶有乙個引數的lua函式,通過和實驗一的結果組成方程組能幫我們求出使用lua虛擬機器的時間和引數出入棧的時間。

其中lua函式是非常簡單的如下:

function

test(x1)

end

實驗結果:我們呼叫這個函式1000次所需要的時間在16ms左右,也就是說一次呼叫的時間在0.016ms左右。

實驗三:我們在實驗二的函式中加入lua呼叫c++的函式,這個函式在c++端也什麼都不做,來測試lua呼叫c++時入棧和出棧時候的時間。

函式簡單如下:

function

test(x1)

chat(x1,x2,x3,x4,x5,x6,x7)

end

實驗結果:我們發現其使用時間高於(實驗二)15ms左右,估計,呼叫一次虛擬機器的時間是14ms,引數的時間估計是1ms左右

實驗四:我們在實驗二的基礎之上將其函式引數擴充到2個,我們觀察其時間有沒有小幅的變化。

函式如下:

function

test(x1,x2)

end

實驗結果:我們發現時間和實驗二差不多,這或許可以反映出出入棧的時間是比較快的,申請比較大的棧記憶體或許會占用比較多的時間。

實驗五:我們在實驗二的基礎上將函式的引數擴充到3個,我們發現其時間還是沒有明顯的變化。

函式如下:

function

test(x1,x2,x3)

end

實驗結果:可以反映出出入棧的時間是比較快的,申請比較大的棧記憶體或許會占用比較多的時間。

實驗六:我將函式的引數擴充套件到7個,我們觀察其時間是如何變化的

函式如下:

function

test

(x1,x2,x3,x4,x5,x6,x7)

end

實驗結果:發現去時間和實驗五差不多,或許可以驗證出入棧的時間是比較快的,申請比較大的棧記憶體或許會占用比較多的時間。

C呼叫lua指令碼的效率測試

include extern c lua直譯器指標 const char lua script function loop add a,b local sum 0 for i 1,10000000 do sum sum a b end return sum end function add a,b ...

C呼叫lua指令碼的效率測試

c呼叫lua指令碼的效率測試 以下 以c語言為基準,測試了c呼叫lua迴圈和迴圈呼叫lua的效率。結論是不要頻繁地穿越c lua邊界.include extern c lua直譯器指標 const char lua script function loop add a,b local sum 0 f...

C呼叫lua指令碼的效率測試

c呼叫lua指令碼的效率測試 以下 以c語言為基準,測試了c呼叫lua迴圈和迴圈呼叫lua的效率。結論是不要頻繁地穿越c lua邊界.include extern c lua直譯器指標 const char lua script function loop add a,b local sum 0 f...