AddBenchmark.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. [IterationSetup]
  10. public void Setup()
  11. {
  12. core = new();
  13. core.Setup("add.lua");
  14. }
  15. [IterationCleanup]
  16. public void Cleanup()
  17. {
  18. core.Dispose();
  19. core = default!;
  20. GC.Collect();
  21. }
  22. [Benchmark(Description = "MoonSharp (RunString)")]
  23. public DynValue Benchmark_MoonSharp_String()
  24. {
  25. return core.MoonSharpState.DoString(core.SourceText);
  26. }
  27. [Benchmark(Description = "MoonSharp (RunFile)")]
  28. public DynValue Benchmark_MoonSharp_File()
  29. {
  30. return core.MoonSharpState.DoFile(core.FilePath);
  31. }
  32. [Benchmark(Description = "NLua (DoString)")]
  33. public object[] Benchmark_NLua_String()
  34. {
  35. return core.NLuaState.DoString(core.SourceText);
  36. }
  37. [Benchmark(Description = "NLua (DoFile)")]
  38. public object[] Benchmark_NLua_File()
  39. {
  40. return core.NLuaState.DoFile(core.FilePath);
  41. }
  42. [Benchmark(Description = "NeoLua (DoChunk(code))")]
  43. public Neo.IronLua.LuaResult Benchmark_NeoLua_String()
  44. {
  45. return core.NeoLuaEnvironment.DoChunk(core.SourceText, "chunk");
  46. }
  47. [Benchmark(Description = "NeoLua (DoChunk(fileName))")]
  48. public Neo.IronLua.LuaResult Benchmark_NeoLua_File()
  49. {
  50. return core.NeoLuaEnvironment.DoChunk(core.FilePath);
  51. }
  52. [Benchmark(Description = "Lua-CSharp (DoString)")]
  53. public async Task<LuaValue> Benchmark_LuaCSharp_String()
  54. {
  55. await core.LuaCSharpState.DoStringAsync(core.SourceText, buffer);
  56. return buffer[0];
  57. }
  58. [Benchmark(Description = "Lua-CSharp (DoFileAsync)")]
  59. public async Task<LuaValue> Benchmark_LuaCSharp_File()
  60. {
  61. await core.LuaCSharpState.DoFileAsync(core.FilePath, buffer);
  62. return buffer[0];
  63. }
  64. }