Measure Before Optimize

lesson workflow active workflow/measure-before-optimize.md View on GitHub

Measure Before Optimize

Rule

Always measure and profile to identify actual performance bottlenecks before implementing optimizations.

Context

When considering performance improvements or caching implementations for any system component.

Detection

Observable signals indicating need for measurement:

Pattern

Measure first, then decide based on data:

# Measure performance with profiling
pytest tests/test_lessons*.py --profile --durations=10

# Analyze results to identify actual bottlenecks
# - Check top time consumers
# - Look for operations >100ms
# - Document baseline metrics

# Decision based on data:
# - No bottleneck found? No optimization needed
# - Bottleneck found? Target specific operations

Anti-pattern: Optimization without measurement

# smell: assumption without data
# "This looks complex, so it must be slow"
# Implements caching for lesson parsing
# No profiling data to support the need

Outcome

Following this pattern leads to:

Benefits:

Related

Match Keywords

implementing optimization without profiling assuming slowness based on complexity building caching before confirming problems this looks complex so it must be slow pytest --profile premature optimization