MCPcopy Create free account
hub / github.com/FastLED/FastLED / generate_report

Method generate_report

ci/perf/compile_perf.py:319–495  ·  view source on GitHub ↗

Generate human-readable report.

(
        self, format_type: str = "text", threshold_ms: float = 50.0
    )

Source from the content-addressed store, hash-verified

317 return tree
318
319 def generate_report(
320 self, format_type: str = "text", threshold_ms: float = 50.0
321 ) -> str:
322 """Generate human-readable report."""
323 if format_type == "json":
324 return json.dumps(self.generate_json(), indent=2)
325
326 # Text report
327 lines: list[str] = []
328
329 total_time = self.get_total_time()
330 phases = self.get_phase_times()
331 fastled_headers = self.get_fastled_headers()
332 top_ops = self.get_top_operations(20)
333
334 # Header
335 lines.append("=" * 80)
336 lines.append("FASTLED COMPILATION PERFORMANCE REPORT")
337 lines.append("=" * 80)
338 lines.append(f"Generated: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
339 lines.append(f"Compiler: {os.environ.get('COMPILER', 'clang++')}")
340 lines.append("File: ci/perf/test_compile.cpp")
341 lines.append("")
342
343 # Summary
344 lines.append("SUMMARY")
345 lines.append("-" * 80)
346 lines.append(f"Total Compilation Time: {total_time:,.2f} ms")
347 frontend_time = phases.get("Frontend", 0)
348 backend_time = phases.get("Backend", 0)
349 if total_time > 0:
350 lines.append(
351 f"Frontend Time: {frontend_time:,.2f} ms ({frontend_time / total_time * 100:.1f}%)"
352 )
353 lines.append(
354 f"Backend Time: {backend_time:,.2f} ms ({backend_time / total_time * 100:.1f}%)"
355 )
356 lines.append("")
357
358 # Compilation Phases
359 lines.append("COMPILATION PHASES")
360 lines.append("-" * 80)
361 for phase_name in ["Source", "Templates", "Lexing", "Preprocessing"]:
362 phase_time = phases.get(phase_name, 0)
363 if phase_time > 0 and total_time > 0:
364 lines.append(
365 f"{phase_name:25s} {phase_time:8.2f} ms ({phase_time / total_time * 100:5.1f}%)"
366 )
367 lines.append("")
368
369 # FastLED Headers (Level 1)
370 lines.append("FASTLED HEADERS (Level 1 - Direct Includes)")
371 lines.append("-" * 80)
372 for name, time_ms in fastled_headers[:20]:
373 flag = " (SLOW)" if time_ms > threshold_ms else ""
374 lines.append(f" {time_ms:6.1f} ms - {name}{flag}")
375 lines.append("")
376

Callers 1

mainFunction · 0.95

Calls 10

generate_jsonMethod · 0.95
get_total_timeMethod · 0.95
get_phase_timesMethod · 0.95
get_fastled_headersMethod · 0.95
get_top_operationsMethod · 0.95
build_header_treeMethod · 0.95
itemsMethod · 0.80
appendMethod · 0.45
nowMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected