Skip to content

Infinitode/FuncProfiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FuncProfiler

Python Version Code Size Downloads License Compliance PyPI Version

An open-source Python library for identifying bottlenecks in code. It includes function profiling, data exports, logging, and line-by-line profiling for more granular control.

Changelog (v.1.2.0):

  • Significant performance improvements for both function and line-by-line profiling.
  • Cached function metadata at decoration time to reduce overhead during execution.
  • Optimized line-by-line tracing using code object identity comparison.
  • Implemented buffered logging for shared logs to minimize frequent file I/O.
  • Improved trace accuracy by properly capturing the final line's execution time.
  • Refactored export logic for more efficient report generation.

Changelog (v.1.1.0):

  • Added support for 2 new export formats: yaml and toml.
  • Exports now include more information: peak memory usage, timestamp, arguments, return value, filepath, line number, and docstring.
  • Added enabled and log_level options to the decorators.
  • Improved export formats for better readability.

Installation

You can install FuncProfiler using pip:

pip install funcprofiler

Supported Python Versions

FuncProfiler supports Python 3.6 and later.

Features

  • Function Profiling: Monitor a function's memory usage and execution time.
  • Line-by-Line Profiling: Get execution time and memory usage for each line of a function.
  • Shared Logging: Log profiler outputs to a .txt file.
  • File Exports: Export profiling data in various formats.
  • New Options:
    • enabled: A boolean to enable or disable profiling.
    • log_level: Set the logging level to "info" or "debug".

Export Formats

Format function_profile line_by_line_profile
txt
json
csv
html
xml
md
yaml
toml

Usage

Function Profiling

from funcprofiler import function_profile

@function_profile(export_format="html", shared_log=True, log_level="debug")
def some_function():
    return "Hello World."

message = some_function()

Line-by-Line Profiling

from funcprofiler import line_by_line_profile

@line_by_line_profile(shared_log=True, enabled=True)
def some_complicated_function(n):
    total = 0
    for i in range(n):
        for j in range(i):
            total += (i * j) ** 0.5
    return total

total = some_complicated_function(1000)

Contributing

Contributions are welcome! Please open an issue or submit a pull request on GitHub.

License

FuncProfiler is released under the MIT License (Modified). See the LICENSE file for details.

About

An open-source Python library for identifying bottlenecks in code. It includes function profiling, data exports, logging, and line-by-line profiling for more granular control.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors

Languages