This commit is contained in:
Will Abbott 2024-09-07 17:36:14 +01:00
parent 514be20faf
commit f1638be9c4
52 changed files with 986 additions and 928 deletions

View file

@ -19,8 +19,18 @@ settings.configure(
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": ["example_project/templates"],
"APP_DIRS": False,
"APP_DIRS": True,
"OPTIONS": {
"loaders": [
(
"django.template.loaders.cached.Loader",
[
"django_cotton.loader.CottonLoader",
"django.template.loaders.filesystem.Loader",
"django.template.loaders.app_directories.Loader",
],
)
],
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
@ -37,38 +47,59 @@ settings.configure(
django.setup()
def template_bench(template_name, iterations=500):
def template_bench(template_name, iterations=1000):
start_time = time.time()
for _ in range(iterations):
render_to_string(template_name)
end_time = time.time()
return end_time - start_time, render_to_string(template_name)
duration = round((end_time - start_time) * 1000, 2)
return duration, render_to_string(template_name)
def template_bench_alt(template_name, iterations=500):
def template_bench_alt(template_name, iterations=1000):
data = list(range(1, iterations))
start_time = time.time()
render_to_string(template_name, context={"data": data})
end_time = time.time()
return end_time - start_time, render_to_string(template_name)
duration = round((end_time - start_time) * 1000, 2)
return duration, render_to_string(template_name)
# warm caches
template_bench_alt("simple_native.html", iterations=1)
template_bench_alt("simple_cotton.html", iterations=1)
simple_native, _ = template_bench_alt("simple_native.html")
simple_cotton, _ = template_bench_alt("simple_cotton.html")
print(f"Native Django Template: {simple_native} seconds")
print(f"Cotton Template: {simple_cotton} seconds")
print("---")
print(f"Native Django {{% for %}} loop: {simple_native} ms")
print(f"Cotton {{% for %}} loop: {simple_cotton} ms")
# warm caches
template_bench("benchmarks/native_include.html", iterations=1)
template_bench("cotton/benchmarks/cotton_include.html", iterations=1)
time_native_include, _ = template_bench("benchmarks/native_include.html")
time_cotton_include, _ = template_bench("cotton/benchmarks/cotton_include.html")
print(f"Native {{% include %}}: {time_native_include} seconds")
print(f"Cotton for include:: {time_cotton_include} seconds")
print("---")
print(f"Native {{% include %}}: {time_native_include} ms")
print(f"Cotton for include: {time_cotton_include} ms")
# warm caches
template_bench("benchmarks/native_extends.html", iterations=1)
template_bench("cotton/benchmarks/cotton_compiled.html", iterations=1)
template_bench("cotton/benchmarks/cotton_extends_equivalent.html", iterations=1)
time_native_extends, _ = template_bench("benchmarks/native_extends.html")
time_compiled_cotton, _ = template_bench("cotton/benchmarks/cotton_compiled.html")
time_cotton, _ = template_bench("cotton/benchmarks/cotton.html")
time_cotton, _ = template_bench("cotton/benchmarks/cotton_extends_equivalent.html")
print(f"Native {{% block %}} and {{% extends %}}: {time_native_extends} seconds")
print(f"Uncompiled Cotton Template: {time_cotton} seconds")
print(f"Compiled Cotton Template: {time_compiled_cotton} seconds")
print("---")
print(f"Native {{% block %}} and {{% extends %}}: {time_native_extends} ms")
print(f"Compiled Cotton Template: {time_compiled_cotton} ms")
print(f"Uncompiled Cotton Template: {time_cotton} ms")