benchmark experimentation (#4811)

* benchmark experimentation

* do the same for test_evaluate_page

* import templates beforehands

* add auto reload

* disable extensions
This commit is contained in:
Khaleel Al-Adhami 2025-02-12 14:51:58 -08:00 committed by GitHub
parent dd5b817f0f
commit d79366d8b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 29 additions and 18 deletions

View File

@ -48,11 +48,10 @@ class ReflexJinjaEnvironment(Environment):
def __init__(self) -> None:
"""Set default environment."""
extensions = ["jinja2.ext.debug"]
super().__init__(
extensions=extensions,
trim_blocks=True,
lstrip_blocks=True,
auto_reload=False,
)
self.filters["json_dumps"] = json_dumps
self.filters["react_setter"] = lambda state: f"set{state.capitalize()}"

View File

@ -374,10 +374,10 @@ def _stateful_page():
@pytest.fixture(params=[_simple_page, _complicated_page, _stateful_page])
def unevaluated_page(request):
def unevaluated_page(request: pytest.FixtureRequest):
return request.param
@pytest.fixture(params=[_simple_page, _complicated_page, _stateful_page])
def evaluated_page(request):
def evaluated_page(request: pytest.FixtureRequest):
return request.param()

View File

@ -1,18 +1,25 @@
import pytest
from pytest_codspeed import BenchmarkFixture
from reflex.compiler.compiler import _compile_page, _compile_stateful_components
from reflex.components.component import Component
@pytest.mark.benchmark
def test_compile_page(evaluated_page):
_compile_page(evaluated_page, None)
def import_templates():
# Importing the templates module to avoid the import time in the benchmark
import reflex.compiler.templates # noqa: F401
@pytest.mark.benchmark
def test_compile_stateful(evaluated_page):
_compile_stateful_components([evaluated_page])
def test_compile_page(evaluated_page: Component, benchmark: BenchmarkFixture):
import_templates()
benchmark(lambda: _compile_page(evaluated_page, None))
@pytest.mark.benchmark
def test_get_all_imports(evaluated_page):
evaluated_page._get_all_imports()
def test_compile_stateful(evaluated_page: Component, benchmark: BenchmarkFixture):
import_templates()
benchmark(lambda: _compile_stateful_components([evaluated_page]))
def test_get_all_imports(evaluated_page: Component, benchmark: BenchmarkFixture):
benchmark(lambda: evaluated_page._get_all_imports())

View File

@ -1,6 +1,11 @@
import pytest
from typing import Callable
from pytest_codspeed import BenchmarkFixture
from reflex.components.component import Component
@pytest.mark.benchmark
def test_evaluate_page(unevaluated_page):
unevaluated_page()
def test_evaluate_page(
unevaluated_page: Callable[[], Component], benchmark: BenchmarkFixture
):
benchmark(unevaluated_page)