Co-Study4Grid / benchmarks /bench_topology_cache.py
github-actions[bot]
Deploy 7688ef1
13d4e44
Raw
History Blame Contribute Delete
2.29 kB
#!/usr/bin/env python3
# Copyright (c) 2025-2026, RTE (https://www.rte-france.com)
# SPDX-License-Identifier: MPL-2.0
"""Breakdown of `NetworkTopologyCache(n)` initialisation.
Validates the cumulative gains of the upstream vectorisation series
(`expert_op4grid_recommender` 0.2.0.post3 → post8) documented in
`docs/performance/history/vectorize-topology-cache.md` and
`docs/performance/history/topology-cache-iter2.md`. Also exercises the narrow
`_get_switches_with_topology` / `_get_branch_with_bus_breaker_info`
variants (post6 / post8).
Usage:
BENCH_NETWORK_PATH=/path/to/grid_dir python benchmarks/bench_topology_cache.py
"""
from __future__ import annotations
import pypowsybl as pp
import pypowsybl.network as pn
from _bench_common import NETWORK_PATH, bench
def main() -> None:
grid = f"{NETWORK_PATH}/grid.xiidm"
print(f"pypowsybl {pp.__version__}")
print(f"Grid: {grid}")
net = pn.load(grid)
from expert_op4grid_recommender.utils.conversion_actions_repas import (
NetworkTopologyCache,
_is_node_breaker_network,
_get_switches_with_topology,
_get_injection_with_bus_breaker_info,
_get_branch_with_bus_breaker_info,
)
is_nb = _is_node_breaker_network(net)
print(f"node_breaker: {is_nb}")
print("\n=== Individual helpers ===")
bench(
"_get_switches_with_topology",
lambda: _get_switches_with_topology(net, node_breaker=is_nb),
)
bench(
"_get_injection_with_bus_breaker_info (loads)",
lambda: _get_injection_with_bus_breaker_info(net, "get_loads", node_breaker=is_nb),
)
bench(
"_get_injection_with_bus_breaker_info (gens)",
lambda: _get_injection_with_bus_breaker_info(net, "get_generators", node_breaker=is_nb),
)
bench(
"_get_branch_with_bus_breaker_info (branches)",
lambda: _get_branch_with_bus_breaker_info(net, "get_branches", node_breaker=is_nb),
)
bench(
"_get_branch_with_bus_breaker_info (lines)",
lambda: _get_branch_with_bus_breaker_info(net, "get_lines", node_breaker=is_nb),
)
print("\n=== Full NetworkTopologyCache(net) init ===")
bench("NetworkTopologyCache(net)", lambda: NetworkTopologyCache(net), reps=3)
if __name__ == "__main__":
main()