Примерно месяц назад я прогонял бенчмарки для серверных Swift-фреймворков. Вчера я обновил свой проект до новой версии Vapor — 1.2.5. Раньше использовал 1.1.11.

Одно из самых важных изменений в Vapor 1.2.x — то, что Vapor теперь использует неблокирующий сервер.

Сегодня я решил прогнать новый бенчмарк проекта, обновлённого до Vapor 1.2, и результаты меня удивили. Он не только быстрее версии 1.1.x — он сравнялся с результатами Node.js!

Vapor vs. Node.js

Мой сервер:

  • 2 ГБ RAM
  • 1 ядро CPU
  • SSD
  • 125 Мбит/с исходящего трафика
  • Ubuntu 16.10
  • CouchDB

Бенчмарк с другого сервера запускался так:

wrk -t4 -c20 -d5m https://my_url

API просто берёт данные из CouchDB и отдаёт их как JSON.

Всего запросов

Запросов в секунду

Средняя задержка

Эти результаты выглядят гораздо лучше предыдущих, так что я уверен — бэкенд на Swift может быть хорошим выбором. Последний вопрос для меня сейчас — потребление памяти. После бенчмарков Vapor вырос с 13,4 МБ до 59,1 МБ. Возможно, у меня где-то утечки в коде, посмотрим.