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:
parent
dd5b817f0f
commit
d79366d8b2
@ -48,11 +48,10 @@ class ReflexJinjaEnvironment(Environment):
|
|||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
"""Set default environment."""
|
"""Set default environment."""
|
||||||
extensions = ["jinja2.ext.debug"]
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
extensions=extensions,
|
|
||||||
trim_blocks=True,
|
trim_blocks=True,
|
||||||
lstrip_blocks=True,
|
lstrip_blocks=True,
|
||||||
|
auto_reload=False,
|
||||||
)
|
)
|
||||||
self.filters["json_dumps"] = json_dumps
|
self.filters["json_dumps"] = json_dumps
|
||||||
self.filters["react_setter"] = lambda state: f"set{state.capitalize()}"
|
self.filters["react_setter"] = lambda state: f"set{state.capitalize()}"
|
||||||
|
@ -374,10 +374,10 @@ def _stateful_page():
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture(params=[_simple_page, _complicated_page, _stateful_page])
|
@pytest.fixture(params=[_simple_page, _complicated_page, _stateful_page])
|
||||||
def unevaluated_page(request):
|
def unevaluated_page(request: pytest.FixtureRequest):
|
||||||
return request.param
|
return request.param
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(params=[_simple_page, _complicated_page, _stateful_page])
|
@pytest.fixture(params=[_simple_page, _complicated_page, _stateful_page])
|
||||||
def evaluated_page(request):
|
def evaluated_page(request: pytest.FixtureRequest):
|
||||||
return request.param()
|
return request.param()
|
||||||
|
@ -1,18 +1,25 @@
|
|||||||
import pytest
|
from pytest_codspeed import BenchmarkFixture
|
||||||
|
|
||||||
from reflex.compiler.compiler import _compile_page, _compile_stateful_components
|
from reflex.compiler.compiler import _compile_page, _compile_stateful_components
|
||||||
|
from reflex.components.component import Component
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.benchmark
|
def import_templates():
|
||||||
def test_compile_page(evaluated_page):
|
# Importing the templates module to avoid the import time in the benchmark
|
||||||
_compile_page(evaluated_page, None)
|
import reflex.compiler.templates # noqa: F401
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.benchmark
|
def test_compile_page(evaluated_page: Component, benchmark: BenchmarkFixture):
|
||||||
def test_compile_stateful(evaluated_page):
|
import_templates()
|
||||||
_compile_stateful_components([evaluated_page])
|
|
||||||
|
benchmark(lambda: _compile_page(evaluated_page, None))
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.benchmark
|
def test_compile_stateful(evaluated_page: Component, benchmark: BenchmarkFixture):
|
||||||
def test_get_all_imports(evaluated_page):
|
import_templates()
|
||||||
evaluated_page._get_all_imports()
|
|
||||||
|
benchmark(lambda: _compile_stateful_components([evaluated_page]))
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_all_imports(evaluated_page: Component, benchmark: BenchmarkFixture):
|
||||||
|
benchmark(lambda: evaluated_page._get_all_imports())
|
||||||
|
@ -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(
|
||||||
def test_evaluate_page(unevaluated_page):
|
unevaluated_page: Callable[[], Component], benchmark: BenchmarkFixture
|
||||||
unevaluated_page()
|
):
|
||||||
|
benchmark(unevaluated_page)
|
||||||
|
Loading…
Reference in New Issue
Block a user