Skip to content

platomo/profileme

Repository files navigation

Welcome to Profile Me

License: MIT License GitHub release (with filter)

library for profiling

Author

👤 Jelle Kuebler

Example

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
    )

Show your support

Give a ⭐️ if this project helped you!

📝 License

This project is licensed under the MIT License. For more details, please refer to the LICENSE file.