mirror of https://github.com/krateng/maloja.git
41 lines
800 B
Python
41 lines
800 B
Python
import os
|
|
|
|
import cProfile, pstats
|
|
|
|
from doreah.logging import log
|
|
from doreah.timing import Clock
|
|
|
|
from ..pkg_global.conf import data_dir
|
|
|
|
|
|
profiler = cProfile.Profile()
|
|
|
|
FULL_PROFILE = False
|
|
|
|
def profile(func):
|
|
def newfunc(*args,**kwargs):
|
|
|
|
if FULL_PROFILE:
|
|
benchmarkfolder = data_dir['logs']("benchmarks")
|
|
os.makedirs(benchmarkfolder,exist_ok=True)
|
|
|
|
clock = Clock()
|
|
clock.start()
|
|
|
|
if FULL_PROFILE:
|
|
profiler.enable()
|
|
result = func(*args,**kwargs)
|
|
if FULL_PROFILE:
|
|
profiler.disable()
|
|
|
|
log(f"Executed {func.__name__} ({args}, {kwargs}) in {clock.stop():.2f}s",module="debug_performance")
|
|
if FULL_PROFILE:
|
|
try:
|
|
pstats.Stats(profiler).dump_stats(os.path.join(benchmarkfolder,f"{func.__name__}.stats"))
|
|
except Exception:
|
|
pass
|
|
|
|
return result
|
|
|
|
return newfunc
|