Я не могу воспроизвести ваши результаты. Я использовал ваши тестовые файлы и сгенерировал пустой проект Django с
django-admin.py startproject foo && cd foo
С Tornado 2.1.1 я получаю согласованное 45 мс за итерацию.
С Django 1.3.1 я получаю 480мс за итерацию.
Для Jinja2 я провел 4 теста. 2.5.2 и 2.6 с и без MarkupSafe :
2.5.2:
- с безопасностью разметки: 19 мс
- без: 14мс
2,6
Мне интересно, что MarkupSafe на самом деле значительно замедляет 2.5.2 (хотя все еще только 5 мс), хотя это может быть из-за того, что у меня нет версии MarkupSafe, которая была бы более современной с Jinja2 2.5.2.
Ваш тест также не использует кеш байт-кода Jinja2, что может значительно ускорить его. Я не уверен, есть ли у Django кеш шаблонов или нет - я знаю, что он имеет кеширование фрагментов, но я не уверен во всем этом.
Обновление: Я попробовал встроенный MemcachedBytecodeCache
, и он замедлил Jinja2 с 2,6 до 22 мс, вероятно, потому, что на таком простом шаблоне сетевая активность хуже, чем его сборка. С кешем оперативной памяти это были те же самые 14 мс.