52 votes

Quel est le système de templates le plus rapide pour Python?

Jinja2 et Mako sont apparemment très rapides.

Comment sont-ils comparés à string.Template?

100voto

Ants Aasma Points 22921

Voici les résultats du modèle populaire pour les moteurs de rendu d'un 10x1000 tableau HTML.

Python 2.6.2 on a 3GHz Intel Core 2

Kid template                         696.89 ms
Kid template + cElementTree          649.88 ms
Genshi template + tag builder        431.01 ms
Genshi tag builder                   389.39 ms
Django template                      352.68 ms
Genshi template                      266.35 ms
ElementTree                          180.06 ms
cElementTree                         107.85 ms
StringIO                              41.48 ms
Jinja 2                               36.38 ms
Cheetah template                      34.66 ms
Mako Template                         29.06 ms
Spitfire template                     21.80 ms
Tenjin                                18.39 ms
Spitfire template -O1                 11.86 ms
cStringIO                              5.80 ms
Spitfire template -O3                  4.91 ms
Spitfire template -O2                  4.82 ms
generator concat                       4.06 ms
list concat                            3.99 ms
generator concat optimized             2.84 ms
list concat optimized                  2.62 ms

L'indice de référence est basé sur le code de Spitfire tests de performance avec des moteurs de template et a ajouté itérations pour augmenter la précision. La liste et le générateur concat à la fin de la main codé en Python pour avoir une idée de la limite supérieure de la performance réalisables par la compilation de bytecode Python. Les versions optimisées utilisation de la chaîne d'interpolation dans la boucle interne.

Mais avant de vous lancer pour changer votre moteur de template, assurez-vous que c'est important. Vous aurez besoin de faire un peu assez lourd, la mise en cache et vraiment optimisé le code avant les différences entre la compilation des moteurs de template commence à la matière. Pour la plupart des applications de bonnes installations de captage, de compatibilité avec les outils de conception, de familiarité et d'autres choses qui comptent beaucoup plus.

9voto

Josh Gibson Points 3735

À partir de la jinja2 docs, il semble que la chaîne de caractères.Le modèle est la manière la plus rapide si c'est tout ce dont vous avez besoin.

Sans doute, vous devriez essayer de enlever autant de la logique à partir de modèles comme possible. Mais les modèles sans logique de dire que vous avez à faire tous les traitement dans le code ce qui est ennuyeux et stupide. Un moteur de template qui est-ce que est livré avec Python et appelé chaîne.De modèle. Vient sans boucles et de conditions et de loin la manière la plus rapide moteur de template, vous pouvez obtenir pour Python.

3voto

Tony Points 871

Si vous pouvez lancer la mise en cache dans le mélange (comme memcached), choisissez en fonction des fonctionnalités et de la facilité d'utilisation plutôt que de l'optimisation.

J'utilise Mako parce que j'aime la syntaxe et les fonctionnalités. Heureusement, c'est l'un des plus rapides.

1voto

Lennart Regebro Points 52510

En général, vous devrez faire du profilage pour répondre à cette question, car cela dépend de la manière dont vous utilisez les modèles et de leur utilité.

string.Template est le plus rapide, mais si primitif, il peut difficilement être appelé un modèle du même souffle que les autres systèmes de templates, car il ne fait que remplacer des chaînes, et n'a pas de conditions ou de boucles, ce qui le rend plutôt inutile en pratique.

-3voto

Koen Bok Points 1523

Je pense que Cheetah pourrait être le plus rapide, car il est implémenté en C.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X