Program.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.Diagnostics;
  3. using System.IO;
  4. using System.Reflection;
  5. using Jint.Parser;
  6. namespace Jint.Benchmark
  7. {
  8. class Program
  9. {
  10. private const string script = @"
  11. var o = {};
  12. o.Foo = 'bar';
  13. o.Baz = 42;
  14. o.Blah = o.Foo + o.Baz;
  15. function fib(n){
  16. if(n<2) {
  17. return n;
  18. }
  19. return fib(n-1) + fib(n-2);
  20. }
  21. fib(3);
  22. ";
  23. static void Main(string[] args)
  24. {
  25. const int iterations = 1000;
  26. const bool reuseEngine = false;
  27. var watch = new Stopwatch();
  28. // warming up engines
  29. var jurassic = new Jurassic.ScriptEngine();
  30. jurassic.Execute(script);
  31. var jint = new Jint.Engine();
  32. jint.Execute(script);
  33. var ironjs = new IronJS.Hosting.CSharp.Context();
  34. ironjs.Execute(script);
  35. watch.Restart();
  36. for (var i = 0; i < iterations; i++)
  37. {
  38. if (!reuseEngine)
  39. {
  40. ironjs = new IronJS.Hosting.CSharp.Context();
  41. }
  42. jurassic.Execute(script);
  43. }
  44. Console.WriteLine("IronJs: {0} iterations in {1} ms", iterations, watch.ElapsedMilliseconds);
  45. watch.Restart();
  46. for (var i = 0; i < iterations; i++)
  47. {
  48. if (!reuseEngine)
  49. {
  50. jint = new Jint.Engine();
  51. }
  52. jint.Execute(script);
  53. }
  54. Console.WriteLine("Jint: {0} iterations in {1} ms", iterations, watch.ElapsedMilliseconds);
  55. watch.Restart();
  56. for (var i = 0; i < iterations; i++)
  57. {
  58. if (!reuseEngine)
  59. {
  60. jurassic = new Jurassic.ScriptEngine();
  61. }
  62. jurassic.Execute(script);
  63. }
  64. Console.WriteLine("Jurassic: {0} iterations in {1} ms", iterations, watch.ElapsedMilliseconds);
  65. }
  66. }
  67. }