diff --git a/codeflash/code_utils/time_utils.py b/codeflash/code_utils/time_utils.py index ff04b5037..e1a3d4a0e 100644 --- a/codeflash/code_utils/time_utils.py +++ b/codeflash/code_utils/time_utils.py @@ -1,6 +1,11 @@ from __future__ import annotations +from functools import lru_cache +from codeflash.result.critic import performance_gain + + +@lru_cache(maxsize=1024) def humanize_runtime(time_in_ns: int) -> str: runtime_human: str = str(time_in_ns) units = "nanoseconds" @@ -89,3 +94,13 @@ def format_perf(percentage: float) -> str: if abs_perc >= 1: return f"{percentage:.2f}" return f"{percentage:.3f}" + + +def format_runtime_comment(original_time_ns: int, optimized_time_ns: int, comment_prefix: str = "#") -> str: + perf_gain = format_perf( + abs(performance_gain(original_runtime_ns=original_time_ns, optimized_runtime_ns=optimized_time_ns) * 100) + ) + status = "slower" if optimized_time_ns > original_time_ns else "faster" + return ( + f"{comment_prefix} {format_time(original_time_ns)} -> {format_time(optimized_time_ns)} ({perf_gain}% {status})" + ) diff --git a/codeflash/languages/__init__.py b/codeflash/languages/__init__.py index c54f438bc..e63f19a5a 100644 --- a/codeflash/languages/__init__.py +++ b/codeflash/languages/__init__.py @@ -38,7 +38,6 @@ reset_current_language, set_current_language, ) - from codeflash.languages.registry import ( detect_project_language, get_language_support, diff --git a/codeflash/languages/registry.py b/codeflash/languages/registry.py index 637bef7e7..e32bb5c16 100644 --- a/codeflash/languages/registry.py +++ b/codeflash/languages/registry.py @@ -53,7 +53,7 @@ def _ensure_languages_registered() -> None: from codeflash.languages.python import support as _ with contextlib.suppress(ImportError): - from codeflash.languages.javascript import support as _ # noqa: F401 + from codeflash.languages.javascript import support as _ with contextlib.suppress(ImportError): from codeflash.languages.java import support as _ # noqa: F401