All tests were executed on my Windows XP Dell Inspiron 6400.
The source code:
function Fibonnaci(n){ var previous = -1, result = 1, sum; for(var i=0; i < n+1; i++){ sum = result + previous; previous = result; result = sum; } return result; } var expectedValues = [ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025, 20365011074, 32951280099, 53316291173, 86267571272, 139583862445, 225851433717, 365435296162, 591286729879, 956722026041, 1548008755920, 2504730781961, 4052739537881, 6557470319842, 10610209857723, 17167680177565, 27777890035288, 44945570212853, 72723460248141, 117669030460994, 190392490709135, 308061521170129, 498454011879264, 806515533049393, 1304969544928657, 2111485077978050, 3416454622906707, 5527939700884757, 8944394323791464, 14472334024676220, 23416728348467684, 37889062373143900, 61305790721611580, 99194853094755490, 160500643816367070, 259695496911122560, 420196140727489660, 679891637638612200, 1100087778366101900, 1779979416004714000, 2880067194370816000, 4660046610375530000, 7540113804746346000, 12200160415121877000, 19740274219868226000, 31940434634990100000, 51680708854858330000, 83621143489848430000, 135301852344706760000, 218922995834555200000]; print('Running...'); var startTime = new Date().getTime(); for (var t = 0; t < 10000; t++) { for (var i = 0; i < 100; i++) { var v = Fibonnaci(i); if(v !== expectedValues[i]) throw new Error('Unexpected value '); } } var endTime = new Date().getTime(); var time = (endTime - startTime)/1000; print('Duration:' + time);
JavaScript Runtimes
- nodeJs 0.2.6 - JavaScript Runtime:V8
- Duration:0.4 s
- Noesis.Javascript 0.4 - JavaScript Runtime V8 for .NET Release mode x86 .NET 4.0
- Duration:0.4 s
- PhantomJs v1.1.0 - JavaScript Runtime:JavaScriptCore (with JIT compiler).
- Duration:0.5 s
- Jurassic v2.1 - JavaScript Runtime:.NET Implementation
- Duration:8.9 s Release mode x86 .NET 3.5
- Duration:7.7 s In the silverlight application from http://jurassic.codeplex.com
- IronJS v0.2 - JavaScript Runtime:.NET Implementation - Release mode x86 .NET 4.0
- Duration:8.5 s
- JSDB - 10.6.21.0 - JavaScript Runtime:Mozilla SpiderMonkey
- Duration:10.8
- Microsoft JScript
- Duration:13.3 s
- Jint - JavaScript Runtime:.NET Implementation Release mode x86 .NET .NET 3.5
- Duration:255.3 s
Embeding a JavaScript run-time in a C# application
Here we have 4 choices, Jint does not use the DLR and you can tell. IronJS and Jurassic are very close.
I had some bizarre issues with compiling my IronJS solution (I had each time to rebuild my solution to see my changes). Anyway it is difficult to beat Noesis.Javascript which use V8.
There is another solution Microsoft JScript.NET, the JScript that came with .NET and that nobody is using. I will have to try.
I had some bizarre issues with compiling my IronJS solution (I had each time to rebuild my solution to see my changes). Anyway it is difficult to beat Noesis.Javascript which use V8.
There is another solution Microsoft JScript.NET, the JScript that came with .NET and that nobody is using. I will have to try.
I have no words for this great post such a awe-some information i got gathered. Thanks to Author.
ReplyDeleteVee Eee Technologies| Vee Eee Technologies|