From 3510cb44a0c652f3b5bc6880aa1ffaa5856678ca Mon Sep 17 00:00:00 2001 From: Peter Byfield Date: Thu, 6 Feb 2025 12:47:43 +0100 Subject: [PATCH 1/2] Add benchmark for "..." in graph.modules In the rust backed implementation this is significantly slower (currently), so lets add a benchmark to track this. --- tests/benchmarking/test_benchmarking.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/benchmarking/test_benchmarking.py b/tests/benchmarking/test_benchmarking.py index beb138c4..463f17ab 100644 --- a/tests/benchmarking/test_benchmarking.py +++ b/tests/benchmarking/test_benchmarking.py @@ -44,7 +44,6 @@ def large_graph(): f"{DEEP_PACKAGE}.application.3242334296.2454157946", ) - TOP_LEVEL_PACKAGE_DEPENDENCIES = { PackageDependency( importer="mypackage.domain", @@ -423,3 +422,11 @@ def test_no_chains(self, large_graph, benchmark): def test_copy_graph(large_graph, benchmark): _run_benchmark(benchmark, lambda: deepcopy(large_graph)) + + +def test_graph_contains_module(large_graph, benchmark): + def f(n): + for i in range(n): + _ = f"foo{i}" in large_graph.modules + + _run_benchmark(benchmark, f, 100) From f99d32d922a98e00185fd32100fc590de055ffb9 Mon Sep 17 00:00:00 2001 From: Peter Byfield Date: Thu, 6 Feb 2025 12:53:44 +0100 Subject: [PATCH 2/2] Add benchmark for iterating over modules in graph We do this currently in import-linter remove_ignored_imports. --- tests/benchmarking/test_benchmarking.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/benchmarking/test_benchmarking.py b/tests/benchmarking/test_benchmarking.py index 463f17ab..85182f21 100644 --- a/tests/benchmarking/test_benchmarking.py +++ b/tests/benchmarking/test_benchmarking.py @@ -430,3 +430,11 @@ def f(n): _ = f"foo{i}" in large_graph.modules _run_benchmark(benchmark, f, 100) + + +def test_iterate_over_modules_in_graph(large_graph, benchmark): + def f(): + for module in large_graph.modules: + _ = module + + _run_benchmark(benchmark, f)