# Jitter — Signal Variability Measurement
**EMA of consecutive absolute differences.** Measures how unstable a
signal is, not where it is.
| Update cost | ~6 cycles |
| Memory | ~24 bytes |
| Types | `JitterF64`, `JitterF32`, `JitterI64`, `JitterI32` |
| Output | `Option<T>` — smoothed jitter value |
## What It Does
```
Low jitter: High jitter:
Value Value
102 ┤ · · · · · 120 ┤ · ·
100 ┤──·──·──·──·──·── 100 ┤ · ·
98 ┤ · · · · · 80 ┤ · · ·
jitter ≈ 2 jitter ≈ 20
```
Tracks: `EMA(|x[n] - x[n-1]|)`. Also provides `jitter_ratio()` =
jitter / mean (context-relative: is 5μs jitter a lot? depends on mean).
## Configuration
```rust
let mut j = JitterF64::builder().span(20).build().unwrap();
if let Some(jitter) = j.update(latency) {
if let Some(ratio) = j.jitter_ratio() {
// ratio > 0.5 → jitter is 50% of mean → very unstable
}
}
```
## Performance
| `JitterF64::update` | 6 cycles | ~9 cycles |