Скорость веб-фреймворка haskell, GHCi vs Compiled

Сегодня я провел небольшой тест на своем локальном компьютере, чтобы сравнить скорость простого текста в различных веб-фреймворках на Haskell, и заметил кое-что странное. Почти все фреймворки, которые я тестировал, работали лучше, когда они запускались из GHCi, по сравнению с скомпилированной версией. вот мои результаты

+------------------------------------
|framework| GHCi rpm   | compiled rpm 
+---------+------------+-------------
|snap     | 8000       | 150
+---------+------------+-------------
|yesod    | 6000       | 2500
+---------+------------+-------------
|scotty   | 22000      | 9500
+---------+------------+-------------
|servant  | 17000      | 8500
+---------+------------+-------------
|spock    | 3300       | 2700
+---------+------------+-------------

Я знаю, что эти цифры не отражают скорость этих фреймворков, так как они не очень хорошо настроены или оптимизированы, но мой вопрос заключается в том, почему эти фреймворки работают лучше при запуске из GHCi. Я делаю что-то неправильно?

чтобы построить их, я просто бегу stack build

1 ответ

Это была недавняя проблема, обнаруженная Харендрой Кумар также в этом билете GHC. Вы можете увидеть соответствующее обсуждение списка рассылки ghc-dev здесь. Посмотрите на это конкретное наблюдение Харендры:

Пытаясь придумать минимальный пример, я обнаружил еще одну загадочную вещь. runghc самый быстрый, ghc медленнее, ghc с оптимизацией медленнее. Это полностью противоположно ожидаемому порядку.

Если возможно, я бы посоветовал вам составить минимальный тест для того же и обновить билет GHC с вашим хранилищем.

Другие вопросы по тегам