help us make TouchDevelop scripts run faster
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.
do you want your script to run faster?
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!
run a benchmark
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:
benchmarks
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.
ID |
Name |
Description |
binary trees |
Allocate many binary trees |
|
mandelbrot |
Generate a Mandelbrot set and write in a bitmap |
|
spectral norm |
Calculate an eigenvalue using the power method |
|
n body |
Perform an N-body simulation of the Jovian planets |
|
pfannkuchen |
Repeatedly access a tiny integer-sequence |
|
fasta |
Generate random DNA sequences |
|
reverse complement |
Read DNA sequences and write their reverse complement |
|
k nucleotide |
Repeatedly update tables and k-nucleotide strings |
compiler optimizations
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:
Name |
Description |
Inlining |
Improves the speed of calls to simple private actions |
Assertion elimination |
Determines when assertion checks are unnecessary and removes then, improving the speed of the code without sacrificing error checking |
Block chaining |
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.
acknowledgements
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.
stay in touch
Like TouchDevelop on Facebook to stay up to date.
Comments
- Anonymous
September 07, 2013
Impressive set of facilities in your system specially your profiling and coverage. I would like to see benchmarks for UI intensive applications - lots of events, threads, web sockets, REST access, local storage.