The Google Dart team has announced Dart SDK 1.3 which improves the performance of asynchronous server-side code to the point that Dart VM is on par with Node.js, the later using another Google technology, the V8 engine.
Dart has a new performance page plotting the performance of the VM and the dart:io library by measuring the Requests/sec, Avg. Latency and Max Latency of an HTTP server in three cases:
-
Hello - a simple HTTP server responding with the string “world” to all requests.
-
File - an HTTP server returning the content of a 100KB file.
-
JSON - an HTTP server returning a dynamically generated JSON string.
According to the charts, the Dart server now handles more than double the traffic for Hello and JSON scenarios and has a 30% improvement for File requests when compared to Dart 1.2. The Avg. Latency has consequently dropped to less than half for Hello and JSON and by ~30% for File. While in the past the Max Latency fluctuated massively around 125ms and 300ms for Hello and respectively JSON, now this value is quite stable at around 5 and 7 ms.
According to Anders Johnsen, a Google engineer, Dart’s server-side performance was improved by using the generational garbage collector, reducing the number of system calls handling asynchronous I/O on Mac OS and Linux, optimizing the VM compiler and code sections in dart:core and dart:async.
Using a different configuration, TechEmpower benchmarked Dart/nginx in December 2013 doing ~35,000 JSON requests/sec while Node.js did ~70,000 Req/sec. Now that Dart handles more than double JSON requests, we can assume that the Dart VM is on par with Node.js. A future TechEmpower benchmark will probably confirm this. A simple HTTP server built with Google Go beats all frameworks/platform with ~215,000 JSON Req/sec. according to the same benchmark.