Implement Phase 2: weblog rendering optimization with per-renderer caching
Optimize pipeline weblog generation through strategic in-memory caching and
precomputation of expensive plot data. Move computation from render-time to
execution-time for applycal and importdata tasks.
Key improvements:
- Per-renderer timing instrumentation (htmlrenderer.py WebLogGenerator.render)
- T2_1DetailsRenderer: Cache expensive plot charts (IntentVsTime, FieldVsTime, etc)
- T2_2_3Renderer: Cache antenna setup plots (PlotAntsChart, UVChart)
- T2_2_4Renderer: Cache sky setup plots (AzElChart, SunTrackChart, etc)
- Applycal: Precompute calapps/caltypes during merge_with_context, store in metadata
- Importdata: Precompute summary rows and flux table data, store in metadata
- ALMA Importdata: Precompute parallactic angle plots for caching
Performance results:
- Phase 1 (metadata export): 120 min → 57 min (52.5% improvement)
- Phase 2 (caching optimizations): 57 min → 50 min (12% additional improvement)
- Total: 58.3% pipeline runtime reduction (70 minutes saved)