程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++調用Lua的性能測試

C++調用Lua的性能測試

編輯:關於C++
游戲服務器經典的架構就是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

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved