CoroutineBenchmark.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. core.LuaCSharpState.OpenCoroutineLibrary();
  16. }
  17. [Benchmark(Description = "MoonSharp (RunString)")]
  18. public DynValue Benchmark_MoonSharp_String()
  19. {
  20. return core.MoonSharpState.DoString(core.SourceText);
  21. }
  22. [Benchmark(Description = "MoonSharp (RunFile)")]
  23. public DynValue Benchmark_MoonSharp_File()
  24. {
  25. return core.MoonSharpState.DoFile(core.FilePath);
  26. }
  27. [Benchmark(Description = "NLua (DoString)")]
  28. public object[] Benchmark_NLua_String()
  29. {
  30. return core.NLuaState.DoString(core.SourceText);
  31. }
  32. [Benchmark(Description = "NLua (DoFile)")]
  33. public object[] Benchmark_NLua_File()
  34. {
  35. return core.NLuaState.DoFile(core.FilePath);
  36. }
  37. [Benchmark(Description = "Lua-CSharp (DoString)")]
  38. public async Task<LuaValue> Benchmark_LuaCSharp_String()
  39. {
  40. await core.LuaCSharpState.DoStringAsync(core.SourceText, buffer);
  41. return buffer[0];
  42. }
  43. [Benchmark(Description = "Lua-CSharp (DoFileAsync)")]
  44. public async Task<LuaValue> Benchmark_LuaCSharp_File()
  45. {
  46. await core.LuaCSharpState.DoFileAsync(core.FilePath, buffer);
  47. return buffer[0];
  48. }
  49. }