Dart VM and dart2js Performance
Tracking Dart VM and
To navigate the chart, drag to pan and shift-drag to zoom.
(See also: Dart I/O Performance)
- Benchmark descriptions
- We are currently showing charts for the
DeltaBlue, Richards, Tracer, and FluidMotion. These benchmarks
are tracked as part of the ton80
code used in these tests.
is a one-way constraint solver, originally written in Smalltalk by
John Maloney and Mario Wolczko. The main focus in DeltaBlue is on
polymorphism and object-oriented programming.
is a 2D Navier-Stokes equations solver, originally written in
The main focus is on accessing numeric arrays,
as well as doing floating-point arithmetic.
is a loop recognition algorithm benchmark originally published at the
Scala Days 2011 Workshop at Stanford.
The Havlak algorithm is an extension of Tarjan’s interval-finding
algorithm that deals with irreducible graphs, and constructs a
loop-nesting forest for an arbitrary flow graph.
is an OS kernel simulation benchmark, originally written
in BCPL by Martin Richards. The main focus in Richards is on property
access and calling functions and methods.
is a ray tracer benchmark,
the class emulation pattern from the prototype.js library.
Because Dart has a native class system,
it’s unfair to do a direct performance comparison with the Octane version.
We therefore compare Dart performance with
The improved version uses only constructors and prototypes
without any abstraction layers in between;
it runs 50% faster than the original
- Benchmark score meaning
- The score is essentially runs/second: the number of times
you can run the benchmark in one second. For all scores,
bigger is better.
- Benchmark harness
- The Dart VM numbers are generated using the Dart
benchmark harness on the
Dart VM. Similarly, the dart2js numbers are generated by compiling the
and then running the generated code in V8.
Finally, the V8 numbers are generated using the same benchmarks written in
- System setup
- The benchmarks are run on an Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz
processor running the Ubuntu 12.04 LTS x64 operating system.
While the code runs on a 64-bit operating system, we’re
running the 32-bit version of both the V8 and Dart VMs.
- Yes, it is fair. Type annotations in Dart have — by design —
no impact on
runtime performance in the VM’s default mode (production). For more details,
read more about Dart’s
optional static types and
why they are optional.
Credit to olliej on HN.
- Where can I learn more about benchmarking Dart?
- Read more about benchmarking Dart.
- Will there be more benchmarks?
- Yes. Porting benchmarks correctly takes time. As more benchmarks become ready,
we will publish more charts.