

Dart vs Java — the DeltaBlue Benchmark - nikolay_botev
http://bonovox.be/blog/dart-vs-java-the-deltablue-benchmark/

======
dvt
There are many problems with this benchmark, as discussed here:
[http://www.reddit.com/r/programming/comments/1e2jhr/dart_vs_...](http://www.reddit.com/r/programming/comments/1e2jhr/dart_vs_java_the_deltablue_benchmark/c9wloq3)

IMO DeltaBlue is a terrible benchmark typology anyway. Benchmarks have to be
localized for them to mean anything; and even then, they don't mean much 90%
of the time. Dart's pretty neat (editing a book about it atm), but this kind
of language zealotry is just silly. Dart is hardly a silver bullet. And many
of the truly _interesting_ features (mixins, isolates, fancier mirrors) are
yet to be implemented or incomplete. Definitely keep an eye out for Dart, but
don't fall all over yourself thinking that it outperforms Java (whatever that
even means).

~~~
mda
Why do you think this is language zealotry? I am very interested in a language
that gives benefits of dynamic languages and speed of statically typed ones.
So benchmarks like this are important and I wish more of the octane benchmark
was also ported to Java and pitted against dart for comparison.

Also check this one: [http://dartogreniyorum.blogspot.ch/2013/05/performance-
optim...](http://dartogreniyorum.blogspot.ch/2013/05/performance-optimization-
and-dart.html)

and later with Simd:

[http://dartogreniyorum.blogspot.ch/2013/05/dart-beats-
java-i...](http://dartogreniyorum.blogspot.ch/2013/05/dart-beats-java-in-
numerical-computing.html)

Btw, I think even with the modifications made to Java version mentioned in the
link you gave, I think latest version of dart now beats Java.

Edit: Author of blog post also compared Richards and Tracer benchmarks:
<http://bonovox.be/blog/dart-vs-java-richards-and-tracer/>

------
discreteevent
This video (<https://developers.google.com/events/io/sessions/324431687>) is
from the V8 guys. Its mainly about V8 and the massive complexity of their
codebase because of all the tricks they have to do to work around the problems
with making js performant (even if its still unpredictable and memory
intensive). At the end they cover a bit about the dart vm.

For anyone who has worked on a large codebase with a fundamentally unsound
architecture or inconsistent requirements you can feel their pain and
understand their motiviation in making dart. Basically they are trying to show
that if they just change the architecture of js a little bit to make dart then
they can get twice (currently) the performance and a lot less complexity. They
knew they could do this because they used to work on smalltalk vms. (I think
that in another way dart is actually an algol-like trojan horse for the
invasion of smalltalk because there's a load of ex-smalltalkers on the team
and you can never cure those guys).

What's a little tragic about it is that they can't figure out why people
aren't jumping all over dart (yet). The tragedy lies in the fact that they are
partly responsible for it by hiding just how bad js is in terms of performance
through their heroic efforts on V8. Then again the video is titled "Web
Languages and VMs: Fast Code is Always in Fashion". The last word in the title
shows that they probably do have their suspicions as to why people aren't
immediately flocking to dart.

~~~
Ygg2
I won't lie. I'd love for JS currently to be replaced by version 2.0 that
starts mostly fresh. Hell, I'd love for AXR to replace current HTML+CSS.
However this is impossible, given the way Internet functions (still got those
sites from 1995 there, good luck migrating that to JS2).

That said Dart isn't that JS2. Perhaps that languages will never exist at all.
I assume that what web might need is a VM that can run various languages on.
And Javascript as web bytecode just doesn't sound right to me.

~~~
ahoge
> _That said Dart isn't that JS2._

To me, it is. Dart fixed everything which was wrong with JavaScript. There is
proper lexical scoping, a lexically scoped `this`, no type coercion, build-in
classes/inheritance, built-in dependency handling, built-in annotations/doc-
comments, and good tooling is also possible.

It really does scale and it's very nice to work with. Plus, there are a bunch
of nice features like lambdas, mixins, and named arguments.

> _Javascript as web bytecode just doesn't sound right to me._

Yea, it's kinda icky, but there doesn't really seem to be a way around it.
Fortunately, dart2js' output is reasonable in terms of size and performance.
Unfortunately, it doesn't work in IE8.

~~~
Ygg2
To each his own I guess. I guess for me Dart doesn't capture a lot of
JavaScripts good sides I guess (the homoiconity of JSON and JS). Also Google
being the main sponsor just makes me slightly wary of it, thought its probably
just my own paranoia.

~~~
ahoge
> _the homoiconi[ci]ty of JSON and JS_

There is a package for making interacting with JSON more seamless and
JavaScript-like:

<http://pub.dartlang.org/packages/json_object>

> _Google being the main sponsor just makes me slightly wary of it_

In that regard, I clearly prefer Google over Oracle or Microsoft. I was also
happy with Sun back in the days.

------
laughfactory
As a newcomer to web dev and Dart, all I can say is Dart rocks! It actually
makes sense as a language (versus js). But that's just my opinion. I highly
recommend checking it out if you're tired of Javascript's idiosyncrasies.

~~~
mark_l_watson
I agree! I am also a new DART'ster. I don't get the same warm fuzzy feeling as
using Clojure, but Dart seems to be a very practical language. I have been
experimenting with very simple REST services and front end apps and like it so
far. I am converting a small Clojurescript + Clojure app to DART to get a
better feel for the language and frameworks.

------
pgsandstrom
Much more interesting than the benchmark was the ease with which the author
seem to have translated dart to java. I'm still new to web development, but
each line of javascript I write makes me long for a more java-like language.

~~~
k__
really? It's the opposite for me.

When I write Java I always feel like I'm using bigger tools than needed. Like
anonymous classes, when I just need a anonymous function etc.

~~~
tosh
When people say they like/long for Java I usually understand that they like
the tooling support and robustness of language/api/libraries and ecosystem in
general.

I think Dart looks very promising in that regard especially when you compare
it to JavaScript without feeling as heavyweight as Java.

Dart is actually a very terse and expressive language. Less ceremony and feels
much more like other dynamic languages like Python or Ruby. Yet having
optional typing and simple semantics it is one of the dynamic languages with
extraordinary tooling support.

In a way Dart gives you the best of both worlds. It takes the good parts and
leaves out the bad :)

~~~
k__
Yeah, the tooling of Java is nice. But it kinda seems like Java would be not
usable without them. Also the code-generators are giving me the willies D:

~~~
PommeDeTerre
It depends on the style of Java code being written.

There was a period from 1995 until around 2001 or so where much Java code was
developed without using IDEs. It was generally simpler, with shallower class
hierarchies, and much less emphasis on design patterns. Such code could be
easily written, understood and maintained without using extensive IDEs and
other tools.

Things changed once Eclipse and other IDEs started to become more widespread,
and some people went overboard using design patterns that are impractical to
work with without the use of IDEs, or otherwise introducing complexity that
just didn't arise earlier.

It's still possible to write the simpler, sensible style of Java code. It's
just that most people who lean that way end up using C++, Go, Python, or some
other language instead.

------
xxgreg
Nikolay has also ported the Richards and Tracer benchmark.

<http://bonovox.be/blog/dart-vs-java-richards-and-tracer/>

------
channi
I suggest google employees should write "work for google" everywhere they
comment or blog or say something about google projects. I bet half of the hype
will just go away then

~~~
afsina
How about discussing on merit, not finger pointing? (not a Google employee)

------
joegaudet
Hardly an apples to apples comparison.

Porting code written for VM a to VM b by some rubric hardly seems like a fair
comparison.

~~~
xxgreg
Yes - benchmarks need to be ported very carefully to make sure they measure
something meaningful. What makes you think that there are problems with this
port?

It is an old well used benchmark, used for benchmarking object-oriented code
with polymorphism.

