As a development platform, TouchDevelop is committed to running your scripts in a way that is fast on all platforms and with minimal energy consumption, allowing scripts to better preserve the battery life of your devices.
In order to improve your experience, we would like to better understand how fast TouchDevelop scripts run on your devices today. We have built a system to measure the performance of selected benchmarks; when you run any benchmark, the results will get automatically uploaded to the cloud so that we can analyze the performance characteristics. We are considering various compiler optimizations that will make your scripts run faster on any particular device and in any particular browser. To find out which optimizations are most effective, we need your help!
Tap on the following link to run a single benchmark:
This link will run a single benchmark program from the entire benchmark suites. Depending on your speed, browser platform, and the randomly selected program, the test speed of a single benchmark may vary from a few milliseconds to a minute. Tap on the following link to run the full benchmark suite:
Don’t close your browser or move to another tab – your browser will only run the benchmarks if you stay on the same page. If you wait until all benchmarks have completed, you will get an overview table:
We purposely built computation-intensive benchmarks scripts to test the overall system speed and it is expected that it will take some time to complete them. These scripts have ids just like all other scripts (iyyydbkw in the screenshot above); you can open them to investigate what operations are being tested. The full list of benchmark scripts appears below and is a subset of the programs featured in the Computer Language Benchmarks Game implemented in TouchDevelop.
Allocate many binary trees
Generate a Mandelbrot set and write in a bitmap
Calculate an eigenvalue using the power method
Perform an N-body simulation of the Jovian planets
Repeatedly access a tiny integer-sequence
Generate random DNA sequences
Read DNA sequences and write their reverse complement
Repeatedly update tables and k-nucleotide strings
If you test a single benchmark instead of the full suite, not only the chosen benchmark will be randomly selected, but also some random optimizations may be selected to help reduce the script run time. The TouchDevelop compiler may end up applying any subset (including the null subset) of the following optimizations:
Improves the speed of calls to simple private actions
Determines when assertion checks are unnecessary and removes then, improving the speed of the code without sacrificing error checking
Improves the speed of loop-intensive scripts
If you are curious about comparing the test speed among different devices, you may run the full benchmark suite, which contains 8 programs. Since they are not randomly selected and no optimizations are used, you will get the same speed if you run it multiple times, allowing you to compare the time with other devices.
The benchmarks and compiler optimizations are currently being developed by Rafael Auler who is currently visiting us from the University of Campinas, Brazil, for a summer internship.
Like TouchDevelop on Facebook to stay up to date.