Delen via


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!

image

run a benchmark

Tap on the following link to run a single benchmark:

touchdevelop.com/app/beta/#hub:singlebenchmark

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:

touchdevelop.com/app/beta/#hub:benchmarksuite

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:

image

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

/smvepynf

binary trees

Allocate many binary trees

/iyyydbkw

mandelbrot

Generate a Mandelbrot set and write in a bitmap

/kibzzrvl

spectral norm

Calculate an eigenvalue using the power method

/gkzpyhif

n body

Perform an N-body simulation of the Jovian planets

/hmbgugdu

pfannkuchen

Repeatedly access a tiny integer-sequence

/ezksbyle

fasta

Generate random DNA sequences

/sqdrxjsu

reverse complement

Read DNA sequences and write their reverse complement

/zuakcwjt

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.

imageacknowledgements

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.