Dart 1.3 的性能达到 Node.js 同等水平

阅读数:2986 2014 年 4 月 11 日

话题:Node.js语言 & 开发

Google 的 Dart 团队宣布发布 Dart SDK 1.3,该版本改进了异步服务器端代码的性能,Dart 虚拟机上的执行效果已经可以与 Node.js 媲美,而 Node.js 使用了 Google 的另一项技术——V8 引擎。

Dart 提供了一个新的性能页面,通过一个 HTTP 服务器在三种情况下的每秒请求数、平均延迟和最大延迟绘制了 Dart 虚拟机和 dart:io 库的性能表现图。这三种情况是:

  • Hello——对所有请求都响应字符串“world”的简单 HTTP 服务器。
  • File——返回一个大小为 100KB 的文件的 HTTP 服务器。
  • JSON——返回一个动态生成的 JSON 字符串的 HTTP 服务器。

根据相应图表,与 Dart 1.2 相比,在 Hello 和 JSON 场景下,Dart 服务器可以处理的请求数比原来的两倍还多,而在 File 场景下,可以处理的请求数也有 30% 的改进。Hello 和 JSON 场景,平均延迟也相应下降到了不足原来的一半,File 场景则下降了 30%。再来看最大延迟,在 Hello 和 JSON 场景下,最大延迟分别在 125ms 和 300ms 上下大幅波动,而现在该值稳定在了 5ms 和 7ms。

据 Google 工程师 Anders Johnsen 介绍,Dart 的服务器端性能是通过分代垃圾收集器得以改进的,减少了在 Mac OS 和 Linux 上处理异步 I/O 的系统调用次数,优化了虚拟机编译器以及 dart:core 和 dart:async 中的代码部分。

2013 年 12 月,当时使用的配置与现在不同,TechEmpower 基准测试的成绩是,Dart/nginx 每秒处理 35 000 个 JSON 请求,而 Node.js 每秒可以处理 70 000 个请求。现在 Dart 可以处理的 JSON 请求数是原来的两倍多,所以我们可以假定 Dart 虚拟机的性能达到了 Node.js 的同等水平。或许未来的 TechEmpower 基准测试会证明这一点。根据同一基准测试,使用 Google 的 Go 构建的一个简单 HTTP 服务器以每秒处理 215 000 个 JSON 请求的成绩打败了所有框架 / 平台。

查看英文原文:The Performance of Dart 1.3 Is on Par with Node.js