Skip to content

Commit d766dab

Browse files
committed
logging done, start experimenting, using diff instead of raw strings
1 parent d209140 commit d766dab

File tree

2 files changed

+14
-28
lines changed

2 files changed

+14
-28
lines changed

codeflash/api/aiservice.py

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@
1111
from pydantic.json import pydantic_encoder
1212

1313
from codeflash.cli_cmds.console import console, logger
14+
from codeflash.code_utils.code_replacer import is_zero_diff
15+
from codeflash.code_utils.code_utils import unified_diff_strings
1416
from codeflash.code_utils.config_consts import N_CANDIDATES_EFFECTIVE, N_CANDIDATES_LP_EFFECTIVE
1517
from codeflash.code_utils.env_utils import get_codeflash_api_key
1618
from codeflash.code_utils.git_utils import get_last_commit_author_if_pr_exists, get_repo_owner_and_name
1719
from codeflash.code_utils.time_utils import humanize_runtime
20+
from codeflash.github.PrComment import FileDiffContent
1821
from codeflash.lsp.helpers import is_LSP_enabled
1922
from codeflash.models.ExperimentMetadata import ExperimentMetadata
2023
from codeflash.models.models import AIServiceRefinerRequest, CodeStringsMarkdown, OptimizedCandidate
@@ -529,8 +532,6 @@ def get_optimization_impact(
529532
replay_tests: str,
530533
concolic_tests: str,
531534
root_dir: Path,
532-
original_line_profiler_results: str,
533-
optimized_line_profiler_results: str,
534535
) -> str:
535536
"""Optimize the given python code for performance by making a request to the Django endpoint.
536537
@@ -553,34 +554,22 @@ def get_optimization_impact(
553554
- 'high','medium' or 'low' optimization impact
554555
555556
"""
557+
diff_str = '\n'.join([unified_diff_strings(code1=original_code[p], code2=new_code[p], fromfile=Path(p).relative_to(root_dir).as_posix(), tofile=Path(p).relative_to(root_dir).as_posix()) for p in original_code if not is_zero_diff(original_code[p], new_code[p])])
558+
code_diff = f"```diff\n{diff_str}\n```"
556559
logger.info("!lsp|Computing Optimization Impact…")
557-
original_code_str = ""
558-
new_code_str = ""
559-
for p, code in original_code.items():
560-
original_code_str += f"```python:{Path(p).relative_to(root_dir).as_posix()}"
561-
original_code_str += "\n"
562-
original_code_str += code
563-
for p, code in new_code.items():
564-
new_code_str += f"```python:{Path(p).relative_to(root_dir).as_posix()}"
565-
new_code_str += "\n"
566-
new_code_str += code
567-
568560
payload = {
569-
"original_code": original_code_str,
570-
"optimized_code": new_code_str,
561+
"code_diff": code_diff,
571562
"existing_tests": existing_tests_source,
572563
"generated_tests": generated_original_test_source,
573564
"trace_id": function_trace_id,
574565
"coverage_message": coverage_message,
575566
"replay_tests": replay_tests,
576567
"concolic_tests": concolic_tests,
577-
"speedup": f"{1 + float(explanation.speedup):.2f}x",
568+
"speedup": f"{100 + 100*float(explanation.speedup):.2f}%",
578569
"loop_count": explanation.winning_benchmarking_test_results.number_of_loops(),
579570
"benchmark_details": explanation.benchmark_details if explanation.benchmark_details else None,
580571
"optimized_runtime": humanize_runtime(explanation.best_runtime_ns),
581572
"original_runtime": humanize_runtime(explanation.original_runtime_ns),
582-
"original_line_profiler_results": original_line_profiler_results,
583-
"optimized_line_profiler_results": optimized_line_profiler_results,
584573
}
585574
console.rule()
586575
try:

codeflash/optimization/function_optimizer.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1406,25 +1406,22 @@ def process_review(
14061406
}
14071407

14081408
raise_pr = not self.args.no_pr
1409+
staging_review = self.args.staging_review
14091410

1410-
if raise_pr or self.args.staging_review:
1411+
if raise_pr or staging_review:
14111412
data["root_dir"] = git_root_dir()
1412-
1413-
if raise_pr:
14141413
# modify argument of staging vs pr based on the impact
14151414
opt_impact_response = self.aiservice_client.get_optimization_impact(
14161415
**data,
1417-
original_line_profiler_results=original_code_baseline.line_profile_results["str_out"],
1418-
optimized_line_profiler_results=best_optimization.line_profiler_test_results["str_out"],
14191416
)
1420-
if opt_impact_response in ["low", "medium"]:
1417+
if opt_impact_response=='low':
14211418
raise_pr = False
1422-
self.args.staging_review = True
1419+
staging_review = True
14231420

1424-
if raise_pr and not self.args.staging_review:
1421+
if raise_pr and not staging_review:
14251422
data["git_remote"] = self.args.git_remote
14261423
check_create_pr(**data)
1427-
elif self.args.staging_review:
1424+
elif staging_review:
14281425
response = create_staging(**data)
14291426
if response.status_code == 200:
14301427
staging_url = f"https://app.codeflash.ai/review-optimizations/{self.function_trace_id[:-4] + exp_type if self.experiment_id else self.function_trace_id}"
@@ -1463,7 +1460,7 @@ def process_review(
14631460
self.revert_code_and_helpers(original_helper_code)
14641461
return
14651462

1466-
if self.args.staging_review:
1463+
if staging_review:
14671464
# always revert code and helpers when staging review
14681465
self.revert_code_and_helpers(original_helper_code)
14691466
return

0 commit comments

Comments
 (0)