123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- using BenchmarkDotNet.Attributes;
- using Jurassic;
- using NiL.JS.Core;
- namespace Jint.Benchmark
- {
- [MemoryDiagnoser]
- public abstract class SingleScriptBenchmark
- {
- private Engine sharedJint;
- private ScriptEngine sharedJurassic;
- private Context sharedNilJs;
- protected abstract string Script { get; }
- [Params(1)]
- public virtual int N { get; set; }
- [Params(true, false)]
- public bool ReuseEngine { get; set; }
- [GlobalSetup]
- public void Setup()
- {
- sharedJint = new Engine();
- sharedJurassic = new ScriptEngine();
- sharedNilJs = new Context();
- }
- [Benchmark]
- public bool Jint()
- {
- bool done = false;
- for (var i = 0; i < N; i++)
- {
- var jintEngine = ReuseEngine ? sharedJint : new Engine();
- jintEngine.Execute(Script);
- done |= jintEngine.GetValue("done").AsBoolean();
- }
- return done;
- }
- [Benchmark]
- public bool Jurassic()
- {
- bool done = false;
- for (var i = 0; i < N; i++)
- {
- var jurassicEngine = ReuseEngine ? sharedJurassic : new ScriptEngine();
- jurassicEngine.Execute(Script);
- done |= jurassicEngine.GetGlobalValue<bool>("done");
- }
- return done;
- }
- [Benchmark]
- public bool NilJS()
- {
- bool done = false;
- for (var i = 0; i < N; i++)
- {
- var nilcontext = ReuseEngine ? sharedNilJs : new Context();
- nilcontext.Eval(Script);
- done |= (bool) nilcontext.GetVariable("done");
- }
- return done;
- }
- }
- }
|