AddBenchmark.cs 1.4 KB

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