README.md
Rendering markdown...
import argparse
import sys
import time
import types
from django.conf import settings
if not settings.configured:
settings.configure(SECRET_KEY="aaa")
from django.http import HttpResponseRedirect
def build_url(n: int) -> str:
host = "\uff21" * n
host = "A" * n
url = "https://" + host + "/"
return url
def measure_redirect(url: str, reps: int) -> float:
start = time.perf_counter()
for _ in range(reps):
# Instantiates HttpResponseRedirect, which calls urlsplit() on url.
HttpResponseRedirect(url)
return (time.perf_counter() - start) / reps
def main() -> None:
reps = 5
sizes = [25_000, 250_000, 2_500_000, 25_000_000]
print("combining_count\turl_length\tavg_seconds")
measurements: list[tuple[int, int, float]] = []
for n in sizes:
url = build_url(n)
avg = measure_redirect(url, reps)
measurements.append((n, len(url), avg))
print(f"{n:>14}\t{len(url):>10}\t{avg:.4f}")
if len(measurements) >= 2:
print("\nTime ratios (successive sizes):")
for (n1, l1, t1), (n2, l2, t2) in zip(measurements, measurements[1:]):
ratio = (t2 / t1) if t1 else float("inf")
print(f"{n1:>14} -> {n2:>14} (len {l1} -> {l2}): {ratio:.2f}x")
if __name__ == "__main__":
main()