File tree 2 files changed +46
-0
lines changed
pyperformance/data-files/benchmarks/bm_gc_traversal
2 files changed +46
-0
lines changed Original file line number Diff line number Diff line change
1
+ [project ]
2
+ name = " pyperformance_bm_gc_traversal"
3
+ requires-python = " >=3.8"
4
+ dependencies = [" pyperf" ]
5
+ urls = {repository = " https://github.com/python/pyperformance" }
6
+ dynamic = [" version" ]
7
+
8
+ [tool .pyperformance ]
9
+ name = " gc_traversal"
Original file line number Diff line number Diff line change
1
+ import pyperf
2
+ import gc
3
+
4
+ N_LEVELS = 1000
5
+
6
+
7
+ def create_recursive_containers (n_levels ):
8
+
9
+ current_list = []
10
+ for n in range (n_levels ):
11
+ new_list = [None ] * n
12
+ for index in range (n ):
13
+ new_list [index ] = current_list
14
+ current_list = new_list
15
+
16
+ return current_list
17
+
18
+
19
+ def benchamark_collection (loops , n_levels ):
20
+ total_time = 0
21
+ all_cycles = create_recursive_containers (n_levels )
22
+ for _ in range (loops ):
23
+ gc .collect ()
24
+ # Main loop to measure
25
+ t0 = pyperf .perf_counter ()
26
+ collected = gc .collect ()
27
+ total_time += pyperf .perf_counter () - t0
28
+
29
+ assert collected == 0
30
+
31
+ return total_time
32
+
33
+
34
+ if __name__ == "__main__" :
35
+ runner = pyperf .Runner ()
36
+ runner .metadata ["description" ] = "GC traversal benchmark"
37
+ runner .bench_time_func ("gc_traversal" , benchamark_collection , N_LEVELS )
You can’t perform that action at this time.
0 commit comments