Last active
October 22, 2016 17:22
-
-
Save asmagin/61828052d8da96bc0e4497e83e96299f to your computer and use it in GitHub Desktop.
Js Engine Performance Tests
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Engine : IDisposable | |
{ | |
private IJsPool pool; | |
private string initJs; | |
public Engine() | |
{ | |
//JsEngineSwitcher.Instance.EngineFactories.AddMsie(new MsieSettings() { EngineMode = JsEngineMode.Auto }); | |
//JsEngineSwitcher.Instance.DefaultEngineName = MsieJsEngine.EngineName; | |
//JsEngineSwitcher.Instance.EngineFactories.AddV8(); | |
//JsEngineSwitcher.Instance.DefaultEngineName = V8JsEngine.EngineName; | |
//JsEngineSwitcher.Instance.EngineFactories.AddJint(new JintSettings() { }); | |
//JsEngineSwitcher.Instance.DefaultEngineName = JintJsEngine.EngineName; | |
//JsEngineSwitcher.Instance.EngineFactories.AddJurassic(); | |
//JsEngineSwitcher.Instance.DefaultEngineName = JurassicJsEngine.EngineName; | |
//JsEngineSwitcher.Instance.EngineFactories.AddChakraCore(); | |
//JsEngineSwitcher.Instance.DefaultEngineName = ChakraCoreJsEngine.EngineName; | |
JsEngineSwitcher.Instance.EngineFactories.AddVroom(); | |
JsEngineSwitcher.Instance.DefaultEngineName = VroomJsEngine.EngineName; | |
initJs = ReadInitFile(@"..\Resources\common.js"); | |
var config = new JsPoolConfig() | |
{ | |
Initializer = initEngine => | |
{ | |
initEngine.Execute(initJs); | |
} | |
}; | |
pool = new JsPool(config); | |
} | |
public string Execute(string command) | |
{ | |
var result = string.Empty; | |
var engine = pool.GetEngine(); | |
try | |
{ | |
result = engine.Evaluate<string>(command); | |
} | |
finally | |
{ | |
pool.ReturnEngineToPool(engine); | |
} | |
return result; | |
} | |
protected string ReadInitFile(string path) | |
{ | |
// This text is added only once to the file. | |
if (File.Exists(path)) | |
{ | |
// Create a file to write to. | |
return File.ReadAllText(path); | |
} | |
return null; | |
} | |
public void Dispose() | |
{ | |
pool.Dispose(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
System.Console.WriteLine("Test #\t\tInit time, s\t\tExec time, s"); | |
for (var j = 0; j < 100; j++) | |
{ | |
var start = DateTime.Now; | |
using (var engine = new Engine()) | |
{ | |
var inittime = (DateTime.Now - start).TotalSeconds; | |
var command = @"common__ext.header.renderToString({})"; | |
start = DateTime.Now; | |
for (var i = 0; i < 1000; i++) | |
{ | |
var result = engine.Execute(command); | |
// System.Console.WriteLine(i); | |
} | |
var time = (DateTime.Now - start).TotalSeconds; | |
System.Console.WriteLine("{j}\t\t{inittime}\t\t{time}"); | |
} | |
} | |
System.Console.ReadLine(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment