Skip to content

Commit

Permalink
Init property benchmarks (#396)
Browse files Browse the repository at this point in the history
* Init property benchmarks

* use default runs

* fix typo

* more typo

* times 100

* default
  • Loading branch information
ludeeus authored Mar 4, 2025
1 parent b689e8b commit e24827c
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 6 deletions.
14 changes: 8 additions & 6 deletions benchmarks/test_compare.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from .const import DEFAULT_RUNS


@pytest.mark.benchmark
@pytest.mark.parametrize(
"input_a,operator, input_b",
(
Expand All @@ -20,34 +19,37 @@
),
)
def test_compare(
benchmark: BenchmarkFixture, input_a: str, operator: str, input_b: str
benchmark: BenchmarkFixture,
input_a: str,
operator: str,
input_b: str,
) -> None:
"""Benchmark for AwesomeVersion comparison."""
obj = AwesomeVersion(input_a)
if operator == ">":

@benchmark
def _run_banchmark() -> None:
def _run_benchmark() -> None:
for _ in range(DEFAULT_RUNS):
assert obj > input_b

elif operator == "<":

@benchmark
def _run_banchmark() -> None:
def _run_benchmark() -> None:
for _ in range(DEFAULT_RUNS):
assert obj < input_b

elif operator == "==":

@benchmark
def _run_banchmark() -> None:
def _run_benchmark() -> None:
for _ in range(DEFAULT_RUNS):
assert obj == input_b

elif operator == "!=":

@benchmark
def _run_banchmark() -> None:
def _run_benchmark() -> None:
for _ in range(DEFAULT_RUNS):
assert obj != input_b
47 changes: 47 additions & 0 deletions benchmarks/test_properties.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
"""Property benchmarks for AwesomeVersion."""

from __future__ import annotations

import pytest
from pytest_codspeed import BenchmarkFixture

from awesomeversion import AwesomeVersion, AwesomeVersionStrategy

from .const import DEFAULT_RUNS

semver_first = {
"ensure_strategy": AwesomeVersionStrategy.SEMVER,
"find_first_match": True,
}


@pytest.mark.parametrize(
"version,class_property",
(
*[(version, "prefix") for version in ("v1.2.3", "v.1.2.3", "1.2.3")],
*[(version, "modifier") for version in ("1.2.3-dev2", "1.2.3dev2")],
*[(version, "modifier_type") for version in ("1.2.3.dev0", "1.2.3.beta0")],
*[(version, "strategy") for version in ("1.2.3", "2099.1.1", "999")],
*[
(version, "strategy_description")
for version in ("1.2.3", "2099.1.1", "999")
],
*[
(version, segment)
for version in ("1.2.3", "123", "0.1.2.3")
for segment in ("major", "minor", "patch")
],
),
)
def test_property(
benchmark: BenchmarkFixture,
version: str | int | float,
class_property: str,
) -> None:
"""Benchmark for AwesomeVersion properties."""
obj = AwesomeVersion(version)

@benchmark
def _run_benchmark() -> None:
for _ in range(DEFAULT_RUNS):
getattr(obj, class_property)

0 comments on commit e24827c

Please sign in to comment.