Get time spent in each compilation phase.
(self)
| 112 | return 0.0 |
| 113 | |
| 114 | def get_phase_times(self) -> dict[str, float]: |
| 115 | """Get time spent in each compilation phase.""" |
| 116 | result: dict[str, float] = {} |
| 117 | |
| 118 | # Main phases |
| 119 | for phase in ["Frontend", "Backend"]: |
| 120 | event = self.phase_events.get(phase) |
| 121 | if event: |
| 122 | result[phase] = event.get("dur", 0) / 1000.0 |
| 123 | |
| 124 | # Additional breakdown |
| 125 | source_time = sum(e.get("dur", 0) for e in self.source_events) / 1000.0 |
| 126 | result["Source"] = source_time |
| 127 | |
| 128 | template_time = sum(e.get("dur", 0) for e in self.instantiate_events) / 1000.0 |
| 129 | result["Templates"] = template_time |
| 130 | |
| 131 | # Try to extract lexing/preprocessing |
| 132 | lex_events = [e for e in self.events if e.get("name", "").startswith("Lex")] |
| 133 | result["Lexing"] = sum(e.get("dur", 0) for e in lex_events) / 1000.0 |
| 134 | |
| 135 | preprocess_events = [ |
| 136 | e for e in self.events if "Preprocess" in e.get("name", "") |
| 137 | ] |
| 138 | result["Preprocessing"] = ( |
| 139 | sum(e.get("dur", 0) for e in preprocess_events) / 1000.0 |
| 140 | ) |
| 141 | |
| 142 | return result |
| 143 | |
| 144 | def _normalize_path(self, path: str) -> str: |
| 145 | """Normalize path for comparison (handle Windows/Unix paths).""" |
no test coverage detected