ShadowRealmBenchmark.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using BenchmarkDotNet.Attributes;
  2. using Esprima.Ast;
  3. namespace Jint.Benchmark;
  4. [MemoryDiagnoser]
  5. [BenchmarkCategory("ShadowRealm")]
  6. public class ShadowRealmBenchmark
  7. {
  8. private const string sourceCode = @"
  9. (function (){return 'some string'})();
  10. ";
  11. private Engine engine;
  12. private Script parsedScript;
  13. [GlobalSetup]
  14. public void Setup()
  15. {
  16. engine = new Engine();
  17. parsedScript = Engine.PrepareScript(sourceCode);
  18. }
  19. [Benchmark]
  20. public void ReusingEngine()
  21. {
  22. engine.Evaluate(sourceCode);
  23. }
  24. [Benchmark]
  25. public void NewEngineInstance()
  26. {
  27. new Engine().Evaluate(sourceCode);
  28. }
  29. [Benchmark]
  30. public void ShadowRealm()
  31. {
  32. var shadowRealm = engine.Realm.Intrinsics.ShadowRealm.Construct();
  33. shadowRealm.Evaluate(sourceCode);
  34. }
  35. [Benchmark]
  36. public void ReusingEngine_ParsedScript()
  37. {
  38. engine.Evaluate(parsedScript);
  39. }
  40. [Benchmark]
  41. public void NewEngineInstance_ParsedScript()
  42. {
  43. new Engine().Evaluate(parsedScript);
  44. }
  45. [Benchmark]
  46. public void ShadowRealm_ParsedScript()
  47. {
  48. var shadowRealm = engine.Realm.Intrinsics.ShadowRealm.Construct();
  49. shadowRealm.Evaluate(parsedScript);
  50. }
  51. }