Program.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Diagnostics;
  3. namespace Jint.Benchmark
  4. {
  5. class Program
  6. {
  7. private const string Script = @"
  8. var o = {};
  9. o.Foo = 'bar';
  10. o.Baz = 42.0001;
  11. o.Blah = o.Foo + o.Baz;
  12. if(o.Blah != 'bar42.0001') throw TypeError;
  13. function fib(n){
  14. if(n<2) {
  15. return n;
  16. }
  17. return fib(n-1) + fib(n-2);
  18. }
  19. if(fib(3) != 2) throw TypeError;
  20. ";
  21. static void Main()
  22. {
  23. const bool runIronJs = true;
  24. const bool runJint = true;
  25. const bool runJurassic = true;
  26. const int iterations = 1000;
  27. const bool reuseEngine = false;
  28. var watch = new Stopwatch();
  29. if (runIronJs)
  30. {
  31. IronJS.Hosting.CSharp.Context ironjs;
  32. ironjs = new IronJS.Hosting.CSharp.Context();
  33. ironjs.Execute(Script);
  34. watch.Restart();
  35. for (var i = 0; i < iterations; i++)
  36. {
  37. if (!reuseEngine)
  38. {
  39. ironjs = new IronJS.Hosting.CSharp.Context();
  40. }
  41. ironjs.Execute(Script);
  42. }
  43. Console.WriteLine("IronJs: {0} iterations in {1} ms", iterations, watch.ElapsedMilliseconds);
  44. }
  45. if (runJint)
  46. {
  47. Engine jint;
  48. jint = new Engine();
  49. jint.Execute(Script);
  50. watch.Restart();
  51. for (var i = 0; i < iterations; i++)
  52. {
  53. if (!reuseEngine)
  54. {
  55. jint = new Jint.Engine();
  56. }
  57. jint.Execute(Script);
  58. }
  59. Console.WriteLine("Jint: {0} iterations in {1} ms", iterations, watch.ElapsedMilliseconds);
  60. }
  61. if (runJurassic)
  62. {
  63. Jurassic.ScriptEngine jurassic;
  64. jurassic = new Jurassic.ScriptEngine();
  65. jurassic.Execute(Script);
  66. watch.Restart();
  67. for (var i = 0; i < iterations; i++)
  68. {
  69. if (!reuseEngine)
  70. {
  71. jurassic = new Jurassic.ScriptEngine();
  72. }
  73. jurassic.Execute(Script);
  74. }
  75. Console.WriteLine("Jurassic: {0} iterations in {1} ms", iterations, watch.ElapsedMilliseconds);
  76. }
  77. }
  78. }
  79. }