library for profiling
👤 Jelle Kuebler
from profileme import ProfilePlotter, profile
@profile(
repeat=1000,
profiler_kwargs=dict(warmup=10),
writer_kwargs=dict(write_console=True),
)
def fibonacci_loop(num: int) -> int:
if num == 0:
return 0
second_to_last = 0
last = 1
for _ in range(1, num):
second_to_last, last = last, second_to_last + last
return last
@profile(
repeat=100,
profiler_kwargs=dict(warmup=10),
writer_kwargs=dict(write_console=True),
)
def fibonacci_recursive_wrapper(
num: int,
) -> int: # profiling recursive method requires wrapper
return fibonacci_recursive(num)
def fibonacci_recursive(num: int) -> int:
if num <= 1:
return num
else:
return fibonacci_recursive(num - 1) + fibonacci_recursive(num - 2)
if __name__ == "__main__":
fibonacci_recursive_wrapper(4)
fibonacci_loop(4)
ProfilePlotter(log=True, column="cumtime", type="all", call_depth=20).update_plots(
"profiles", recursive=True
)
Give a ⭐️ if this project helped you!
This project is licensed under the MIT License. For more details, please refer to the LICENSE file.