2
0

ShadowRealmBenchmark.cs 1.2 KB

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