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 请求的成绩打败了所有框架 / 平台。
评论