Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / Javascript

Saltarelle vs JSIL -- Raytracer Demo

5.00/5 (4 votes)
28 Dec 2012CPOL2 min read 11.1K  
In this post, I have compared the performance of Saltarelle-compiler vs. another C# to JavaScript compiler: JSIL by Kevin Gadd.

I've compared the performance of Saltarelle-compiler vs. another C# to JavaScript compiler: JSIL by Kevin Gadd.

Differently from Saltarelle, JSIL operates at intermediate language (IL) level. After the C# program is compiled by Visual Studio, JSIL examines the MSIL instruction code contained in the DLL files and translates them into JavaScript.

This allows a greater compatibility and portability of .NET applications, but probably introduces an unnecessary layer of abstraction between the original C# code and the JavaScript output.

This is shown by the following test.

I've converted the Raytracer Demo featured on the JSIL website to the Saltarelle compiler, with the aim to compare the execution speed of the two versions.

Adapting the code to Saltarelle was easy but not straightforward. Saltarelle was missing some needed System classes that I had to re-implement, namely Bitmap, Color, StopWatch, Console and Random. I tried to keep them as similar as possible to the JSIL version so to not affect the result of the test. I also had to write the import code for mersenne.js, a small library the demo uses for generating random numbers (probably because javascript's Math.random() lacks the random seed feature).

Result of the Test

I ran the test on a four core Athlon AMD processor with Windows 7 and Chrome browser. The result is summarized in the table:

  Saltarelle JSIL
Script code size (.js) 108 KB 15 MB
Average time/pixel 0.006 ms 0.093 ms

So, on average, Saltarelle is 15 times faster than JSIL. Impressive!

The output script code is also very small-sized with no loading time, while the JSIL version has to download 15 MB of stuff before it can start.

Check By Yourself

You can run the above test in your browser:

You can also download the Visual Studio solution used to build the Saltarelle version.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)