Обновленная версия Google Dart SDK повышает производительность виртуальной машины Dart до Node.js. Утверждается, что новая версия в два раза быстрее, чем ее предшественница, для асинхронного кода Dart в сочетании с операциями ввода-вывода на стороне сервера.
Согласно объявлению о новой версии в блоге Chrome, Андерс Йонсен, “Одержимый скоростью инженер-программист”, сказал:
“Это ставит Dart в ту же лигу, что и популярные серверные среды выполнения, и позволяет создавать высокопроизводительные серверные приложения для виртуальных машин Dart.”
Команда измерила улучшение запросов в секунду с помощью трех простых тестов HTTP: Hello, File и JSON. Hello, который улучшился на 130%, обеспечивает измерение количества базовых соединений, которые может обрабатывать HTTP-сервер, просто измеряя HTTP-сервер, отвечающий фиксированной строкой.
Файловый бенчмарк, который имитирует доступ сервера к статическому контенту и его обслуживание, улучшился почти на 30%.
Тест JSON действует как прокси-сервер для производительности приложений REST, и он показал улучшение почти в два раза пропускной способности.
Данные для приведенной выше диаграммы были собраны на машине Ubuntu 12.04.4 LTS с 8 ГБ оперативной памяти и процессором Intel(R) Core(TM) i5-2400, работающем на сервере с одним изолированным сервером на Dart VM версии 1.1.3, 1.2.0 и 1.3.0-dev.7.5.
Вы можете увидеть подробные результаты на странице производительности дротика.
Джонсен говорит, что улучшения произошли в результате сочетания изменений. Стек HTTP, написанный на Dart, был переработан, чтобы использовать преимущества сборщика мусора поколения виртуальной машины Dart. В Linux и Mac команда сократила количество необходимых системных вызовов для асинхронного ввода-вывода, что значительно сократило задержку ввода-вывода.
Некоторые серверные приложения были профилированы командой, которая выявила недостающие возможности оптимизации в оптимизирующем компиляторе виртуальной машины Dart.
Команда виртуальных машин также настроила компилятор (например, стратегии встраивания и вызовы закрытия) для более эффективного асинхронного кода Dart.Профилирование также использовалось для идентификации неоптимальных элементов в dart:core и dart:async.
В дополнение к изменениям производительности был улучшен редактор Dart с поддержкой угловых завершений кода и улучшенной поддержкой углового анализа и рефакторинга. Существует новый учебник по написанию HTTP-клиентов и серверов, в котором показано, как создать веб-сервер с помощью Dart, а также руководство программиста по приложениям командной строки с помощью Dart. Последняя стабильная версия Dart также доступна для скачивания.