SKILL.md
Performance testing
Running benchmarks
cd tools/performance
# Run all benchmarks (~15-20 minutes)
dotnet run -c Release
# Run specific category
dotnet run -c Release --filter *StreamIndicators*
dotnet run -c Release --filter *BufferIndicators*
dotnet run -c Release --filter *SeriesIndicators*
# Run specific indicator
dotnet run -c Release --filter *.EmaHub
Adding benchmarks
Series pattern
[Benchmark]
public void ToMyIndicator() => quotes.ToMyIndicator(14);
Stream pattern
[Benchmark]
public object MyIndicatorHub() => quoteHub.ToMyIndicatorHub(14).Results;
Buffer pattern
[Benchmark]
public MyIndicatorList MyIndicatorList() => new(14) { quotes };
Style comparison
[Benchmark]
public IReadOnlyList<MyResult> MyIndicatorSeries() => quotes.ToMyIndicator(14);
[Benchmark]
public IReadOnlyList<MyResult> MyIndicatorBuffer() => quotes.ToMyIndicatorList(14);
[Benchmark]
public IReadOnlyList<MyResult> MyIndicatorStream() => quoteHub.ToMyIndicator(14).Results;
Performance targets
Note: These are optimization goals for future v3.1+ effort. Current implementations vary—see PERFORMANCE_ANALYSIS.md for actual measured performance. Some indicator families (e.g., EMA) have inherent framework overhead due to simple operation costs.
| Style | Target vs Series | Use Case |
|---|---|---|
| Series | Baseline | Batch processing |
| BufferList | ≤ 1.2x | Incremental data |
| StreamHub | ≤ 1.5x | Real-time feeds |
