CoroutineBenchmark.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using BenchmarkDotNet.Attributes;
  2. using Lua;
  3. using Lua.Standard;
  4. using MoonSharp.Interpreter;
  5. [Config(typeof(BenchmarkConfig))]
  6. public class CoroutineBenchmark
  7. {
  8. BenchmarkCore core = new();
  9. LuaValue[] buffer = new LuaValue[1];
  10. [GlobalSetup]
  11. public void GlobalSetup()
  12. {
  13. core.Setup("coroutine.lua");
  14. core.LuaCSharpState.OpenBasicLibrary();
  15. }
  16. [Benchmark(Description = "MoonSharp (RunString)")]
  17. public DynValue Benchmark_MoonSharp_String()
  18. {
  19. return core.MoonSharpState.DoString(core.SourceText);
  20. }
  21. [Benchmark(Description = "MoonSharp (RunFile)")]
  22. public DynValue Benchmark_MoonSharp_File()
  23. {
  24. return core.MoonSharpState.DoFile(core.FilePath);
  25. }
  26. [Benchmark(Description = "NLua (DoString)")]
  27. public object[] Benchmark_NLua_String()
  28. {
  29. return core.NLuaState.DoString(core.SourceText);
  30. }
  31. [Benchmark(Description = "NLua (DoFile)")]
  32. public object[] Benchmark_NLua_File()
  33. {
  34. return core.NLuaState.DoFile(core.FilePath);
  35. }
  36. [Benchmark(Description = "Lua-CSharp (DoString)")]
  37. public async Task<LuaValue> Benchmark_LuaCSharp_String()
  38. {
  39. await core.LuaCSharpState.DoStringAsync(core.SourceText, buffer);
  40. return buffer[0];
  41. }
  42. [Benchmark(Description = "Lua-CSharp (DoFileAsync)")]
  43. public async Task<LuaValue> Benchmark_LuaCSharp_File()
  44. {
  45. await core.LuaCSharpState.DoFileAsync(core.FilePath, buffer);
  46. return buffer[0];
  47. }
  48. }