Compare current results with baseline
| 628 | |
| 629 | // Compare current results with baseline |
| 630 | void compare_with_baseline(const BaselineData ¤t) |
| 631 | { |
| 632 | BaselineData baseline; |
| 633 | if (!load_baseline(baseline)) |
| 634 | { |
| 635 | std::cerr << "Error: Could not load baseline file: " << g_config.baseline_file << std::endl; |
| 636 | return; |
| 637 | } |
| 638 | |
| 639 | std::cout << "\n=== Baseline Comparison ===" << std::endl; |
| 640 | std::cout << std::fixed << std::setprecision(2); |
| 641 | auto print_comparison = [](const std::string &metric, double baseline_val, double current_val, bool lower_is_better = true) |
| 642 | { |
| 643 | double diff = current_val - baseline_val; |
| 644 | double percent_change = (diff / baseline_val) * 100.0; |
| 645 | |
| 646 | std::string direction = (diff > 0) ? "increased" : "decreased"; |
| 647 | std::string indicator = (lower_is_better ? (diff > 0 ? "worse" : "better") : (diff > 0 ? "better" : "worse")); |
| 648 | |
| 649 | std::cout << metric << ":\n"; |
| 650 | std::cout << " Baseline: " << baseline_val << "\n"; |
| 651 | std::cout << " Current: " << current_val << "\n"; |
| 652 | std::cout << " Change: " << indicator << " - " << std::abs(percent_change) << "% " << direction << "\n\n"; |
| 653 | }; |
| 654 | |
| 655 | print_comparison("Accuracy Error %", baseline.accuracy_error_percent, current.accuracy_error_percent); |
| 656 | print_comparison("Accuracy Error (ms/event)", baseline.accuracy_error_ms_per_event, current.accuracy_error_ms_per_event); |
| 657 | print_comparison("Overhead %", std::abs(baseline.overhead_percent), std::abs(current.overhead_percent)); |
| 658 | print_comparison("Overhead Time (ms)", std::abs(baseline.overhead_ms), std::abs(current.overhead_ms)); |
| 659 | print_comparison("Overhead per Event (ns)", baseline.overhead_ns_per_event, current.overhead_ns_per_event); |
| 660 | print_comparison("Memory/Event (bytes)", baseline.memory_bytes_per_event, current.memory_bytes_per_event); |
| 661 | print_comparison("Calculation Time (ms)", baseline.calculation_time_ms, current.calculation_time_ms); |
| 662 | print_comparison("Peak Calc Memory (MB)", baseline.peak_calc_memory_mb, current.peak_calc_memory_mb); |
| 663 | } |
| 664 | |
| 665 | // Get platform string |
| 666 | std::string get_platform() |