tutorial template jinja for python django-templates template-engine mako jinja2

jinja - python template website



¿Cuál es el sistema de plantillas más rápido para Python? (5)

Creo que Cheetah podría ser el más rápido, ya que se implementa en C.

Jinja2 y Mako son aparentemente bastante rápidos.

¿Cómo se comparan estos con la cadena? ¿La plantilla?


De los documentos jinja2 , parece que string.Template es el más rápido si eso es todo lo que necesitas.

Sin lugar a dudas, debe intentar eliminar la mayor cantidad de lógica posible de las plantillas. Pero las plantillas sin ninguna lógica significan que tienes que hacer todo el procesamiento en el código que es aburrido y estúpido. Un motor de plantillas que hace eso se envía con Python y se llama string.Template. Viene sin bucles y si se dan las condiciones y es, con mucho, el motor de plantillas más rápido que puede obtener para Python.


En general, tendrá que hacer perfiles para responder a esa pregunta, ya que depende de cómo use las plantillas y para qué.

La plantilla es la más rápida, pero tan primitiva que difícilmente puede llamarse una plantilla al mismo tiempo que los otros sistemas de plantillas, ya que solo reemplaza cadenas, y no tiene condiciones ni bucles, lo que la hace bastante inútil en la práctica.


Estos son los resultados de los populares motores de plantillas para representar una tabla HTML de 10x1000.

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

El punto de referencia se basa en el código de las pruebas de rendimiento de Spitfire con algunos motores de plantillas agregados y repeticiones adicionales para aumentar la precisión. La lista y el punto final del generador están codificados a mano en Python para tener una idea del límite superior de rendimiento que se puede lograr compilando el código de bytes de Python. Las versiones optimizadas utilizan la interpolación de cadenas en el bucle interno.

Pero antes de que se agote para cambiar el motor de su plantilla, asegúrese de que sea importante. Tendrá que hacer un almacenamiento bastante pesado y un código realmente optimizado antes de que las diferencias entre los motores de compilación de plantillas comiencen a ser importantes. Para la mayoría de las aplicaciones, las buenas instalaciones de abstracción, la compatibilidad con las herramientas de diseño, la familiaridad y otras cosas importan mucho más.


Si puede lanzar el almacenamiento en caché en la mezcla (como memcached), elija según las características y la facilidad de uso en lugar de la optimización.

Uso Mako porque me gusta la sintaxis y las características. Afortunadamente es uno de los más rápidos también.