django-components/benchmarks/component_rendering.py
2021-02-12 21:10:33 +01:00

41 lines
1.4 KiB
Python

from time import perf_counter
from django.template import Context, Template
from django_components import component
from tests.django_test_setup import * # NOQA
from tests.testutils import Django111CompatibleSimpleTestCase as SimpleTestCase
class SlottedComponent(component.Component):
def template(self, context):
return "slotted_template.html"
class SimpleComponent(component.Component):
def context(self, variable, variable2="default"):
return {
"variable": variable,
"variable2": variable2,
}
def template(self, context):
return "simple_template.html"
class RenderBenchmarks(SimpleTestCase):
def setUp(self):
component.registry.clear()
component.registry.register('test_component', SlottedComponent)
component.registry.register('inner_component', SimpleComponent)
def test_render_time(self):
template = Template("{% load component_tags %}{% component_block 'test_component' %}"
"{% slot \"header\" %}{% component 'inner_component' variable='foo' %}{% endslot %}"
"{% endcomponent_block %}", name='root')
start_time = perf_counter()
for _ in range(1000):
template.render(Context({}))
end_time = perf_counter()
total_elapsed = end_time - start_time # NOQA
print(f'{total_elapsed } ms per template')