/performance-testing
Benchmark indicator performance with BenchmarkDotNet. Use for Series/Buffer/Stream benchmarks, regression detection, and optimization patterns. Target 1.5x Series for StreamHub, 1.2x for BufferList.
$ npx -y skills add foryourhealth111-pixel/Vibe-Skills --skill performance-testing --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/performance-testing
Context preview
The summary Claude sees to decide when to auto-load this skill.
Benchmark indicator performance with BenchmarkDotNet. Use for Series/Buffer/Stream benchmarks, regression detection, and optimization patterns. Target 1.5x Series for StreamHub, 1.2x for BufferList.
SKILL.md
performance-testing.SKILL.mdname: performance-testing
description: Benchmark indicator performance with BenchmarkDotNet. Use for Series/Buffer/Stream benchmarks, regression detection, and optimization patterns. Target 1.5x Series for StreamHub, 1.2x for BufferList.
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 |
Expected execution times (502 periods)
**Note**: These are optimization targets. Actual execution times vary by indicator complexity and current implementation.
| Complexity | Time | Examples | | ---------- | ---- | -------- | | Fast | < 30μs | SMA, EMA, WMA, RSI | | Medium | 30-60μs | MACD, Bollinger Bands, ATR | | Complex | 60-100μs | HMA, ADX, Stochastic | | Advanced | 100-200μs+ | Ichimoku, Hurst |
Regression detection
# Auto-detect baseline and results
pwsh detect-regressions.ps1
# Custom threshold (default 10%)
pwsh detect-regressions.ps1 -ThresholdPercent 15
Exit codes:
- `0` - No regressions
- `1` - Regressions found
Creating baselines
cp BenchmarkDotNet.Artifacts/results/Performance.*-report-full.json \
baselines/baseline-v3.0.0.json
Required optimization patterns
- Minimize allocations in hot paths
- Avoid LINQ in performance-critical loops
- Use `Span<T>` for zero-copy operations
- Cache calculations when possible
- Test with realistic data sizes (502 periods)
Prohibited patterns
- Excessive LINQ in hot paths
- Boxing/unboxing of value types
- Unnecessary string allocations
- Redundant calculations in loops
- Poor cache locality
See `references/benchmark-patterns.md` for detailed patterns.
--- Last updated: December 31, 2025
Read more
name: performance-testing description: Benchmark indicator performance with BenchmarkDotNet. Use for Series/Buffer/Stream benchmarks, regression detection, and optimization patterns. Target 1.5x Series for StreamHub, 1.2x for BufferList.
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 |
Expected execution times (502 periods)
**Note**: These are optimization targets. Actual execution times vary by indicator complexity and current implementation.
| Complexity | Time | Examples | | ---------- | ---- | -------- | | Fast | < 30μs | SMA, EMA, WMA, RSI | | Medium | 30-60μs | MACD, Bollinger Bands, ATR | | Complex | 60-100μs | HMA, ADX, Stochastic | | Advanced | 100-200μs+ | Ichimoku, Hurst |
Regression detection
# Auto-detect baseline and results pwsh detect-regressions.ps1 # Custom threshold (default 10%) pwsh detect-regressions.ps1 -ThresholdPercent 15
Exit codes:
- `0` - No regressions
- `1` - Regressions found
Creating baselines
cp BenchmarkDotNet.Artifacts/results/Performance.*-report-full.json \ baselines/baseline-v3.0.0.json
Required optimization patterns
- Minimize allocations in hot paths
- Avoid LINQ in performance-critical loops
- Use `Span<T>` for zero-copy operations
- Cache calculations when possible
- Test with realistic data sizes (502 periods)
Prohibited patterns
- Excessive LINQ in hot paths
- Boxing/unboxing of value types
- Unnecessary string allocations
- Redundant calculations in loops
- Poor cache locality
See `references/benchmark-patterns.md` for detailed patterns.
--- Last updated: December 31, 2025
VibeSkills is a general-purpose Skill that automatically routes local Skills and intelligently orchestrates harness workflows.
Repo: foryourhealth111-pixel/Vibe-Skills
Other skills on vibe-skills.
- /LQF_Machine_Learning_Expert_Guide
LQF Machine Learning Expert Guide - Routed skill for ML/Statistical Modeling with Critical Discussion Mode. Triggers on: machine learning, modeling, prediction, training, classification, regression, clustering, deep learning, neural network, model evaluation, feature
Open skill - /adaptyv
Cloud laboratory platform for automated protein testing and validation. Use when designing proteins and needing experimental validation including binding assays, expression testing, thermostability measurements, enzyme activity assays, or protein sequence optimization. Also use
Open skill - /aeon
This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations
Open skill - /algorithmic-art
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing
Open skill - /alpha-vantage
Access real-time and historical stock market data, forex rates, cryptocurrency prices, commodities, economic indicators, and 50+ technical indicators via the Alpha Vantage API. Use when fetching stock prices (OHLCV), company fundamentals (income statement, balance sheet, cash
Open skill - /architecture-patterns
Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use when architecting complex backend systems or refactoring existing applications for better maintainability.
Open skill
