以前一直有人讓給出fakescript與lua的測試數據,那麼問題來了
函數
測試環境爲Amazon EC2 t2.micro,單核1g內存測試
測試代碼和腳本在fakescript的源碼裏都能找到,連接 fakescript
lua
lua與fake均使用O3編譯.net
測試方法爲調用腳本函數myfunc1 900w次,看總消耗時間 code
因爲這種嵌入式腳本,邏輯老是分爲自身邏輯和與C函數的交互,所以測試腳本分紅了對應的兩種
ip
下圖是針對兩種腳本的運行結果:內存
fakescript | lua |
|
9.lua(自身邏輯) |
7s |
10s |
17.lua(調用C函數) |
2s |
5s |
9.lua內容以下,主要是腳本內部的循環、判斷與計算get
-- func1 comment function myfunc1(arg1, arg2) while arg1 < arg2 + 10 do arg1 = arg1 + 1 end return arg1 end
lua的調用圖:源碼
fake的調用圖io
對於17.lua,腳本內容以下,主要內容是調用註冊的C函數cfunc1
-- func1 comment function myfunc1(arg1, arg2) return 1 + cfunc1(-10, cfunc1(arg1, arg2)) end
cfunc1的內容很簡單
int cfunc1(int a, int b) { return a - b; }
那麼lua的調用圖以下:
fake的調用圖爲
能夠看到,fake調用的函數比lua少的多,由於內部結構更簡單