Skip to main content

quikgif benchmark

Profile the GIF encoding pipeline across different configurations. Generates synthetic frames and measures transform, palette optimization, and encoding performance.

quikgif benchmark [options]

Flags

FlagTypeDefaultDescription
--durationString10,30,60Comma-separated recording durations in seconds
--fpsString12,24,30Comma-separated frame rates
--max-widthString800,1280,1920Comma-separated max widths in pixels
--paletteStringauto,global,per-frameComma-separated palette strategies
--patternStringgradientSynthetic frame pattern: solid, gradient, or noise
--jsonBoolfalseOutput results as JSON
--include-transformsBoolfalseInclude ResolutionScaler transform phase in timing
--singleBoolfalseRun only the first value of each parameter (quick test)

How It Works

The benchmark generates synthetic frames at every combination of the specified durations, frame rates, and widths. For each configuration, it measures three phases:

  1. Transform (optional) -- ResolutionScaler processing time
  2. Palette optimization -- color quantization via ColorPaletteOptimizer
  3. GIF encoding -- frame encoding via GIFEncoder

Results include output size, whether a global or per-frame palette was used, and per-phase timing.

Examples

Quick single-configuration test:

quikgif benchmark --single

Benchmark specific configurations:

quikgif benchmark --duration 5,10 --fps 30 --max-width 800 --palette auto

Full benchmark with JSON output:

quikgif benchmark --json > results.json

Include transform timing:

quikgif benchmark --include-transforms --pattern noise

Output

The default table output shows per-configuration rows with timing breakdowns and a summary section with totals, slowest encode, smallest output, and average encode throughput in frames/sec.

Use --json for machine-readable output suitable for trend analysis or CI integration.