Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions ScriptingBenchmark.LuaNET/LuaNETBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,8 @@ public void Cleanup()
}

public int CSharpToLang()
{
//unfortunately I have to do it like this, because for some unknown reason during benchmarking, it throws access violation error on the Lua.lua_pushnumber(L, number) line
//I could not reproduce this exception without benchmarkDotNet
var L = Lua.luaL_newstate();
{
var lastTop = Lua.lua_gettop(L);

Lua.luaL_loadstring(L, _CSharpToLangCode!);
Lua.lua_pcall(L, 0, 1, 0);
Expand All @@ -57,32 +55,36 @@ public int CSharpToLang()
Lua.lua_pop(L, 1);
}

Lua.lua_close(L);
Lua.lua_settop(L, lastTop);
return number;
}

public int LangToCSharp()
{
var lastTop = Lua.lua_gettop(L);

Lua.luaL_loadstring(L, _LangToCSharpCode!);
Lua.lua_pcall(L, 0, 1, 0);

var number = (int)Lua.lua_tonumber(L, -1);
Lua.lua_pop(L, 1);
var number = (int)Lua.lua_tonumber(L, -1);

Lua.lua_settop(L, lastTop);
return number;
}

public string LangAlloc()
{
var lastTop = Lua.lua_gettop(L);

Lua.luaL_loadstring(L, _LangAllocCode!);
Lua.lua_pcall(L, 0, 1, 0);

Lua.lua_rawgeti(L, -1, LoopCount);
Lua.lua_getfield(L, -1, "test");

var result = Lua.lua_tostring(L, -1);
Lua.lua_pop(L, 2);


Lua.lua_settop(L, lastTop);
return result!;
}

Expand All @@ -98,4 +100,5 @@ private static int IncrementFunction(lua_State L)
Lua.lua_pushnumber(L, number + 1);
return 1; // Number of return values
}
}

}