|Platform||Execution Time (for several thousand valid solutions)|
|Java (JDK 1.4.2)||680ms|
|C# (.NET 1.1)||790ms|
|C# (.NET 1.1) after NGEN||390ms|
What I did here was to feed the solver with a sparsely populated puzzle that has thousands of valid solutions, and measure the time of execution to find all the solutions in a brute-force manner. Just finding one solution would be beyond the scale of time measurement.
Right now I am working on a C++ port, so this will be another interesting comparison (my C++ coding is slower than it used to be, since I have not written a single line of C++ over the last two years).