# Reproducibility bundle — 50,000 product full update (add/remove/change)

Everything needed to reproduce the "50,000 product full update (add/remove/change)" benchmark of Super Speedy Imports vs
WP All Import Pro. From superspeedyplugins.com.

## Server used for the published numbers
Hetzner CPX32 — 4 vCPU (AMD), 8 GB RAM, 160 GB SSD, Ubuntu 24.04 LTS.
WordPress 7.0, WooCommerce 10.3, PHP 8.2, MariaDB 10.6.
SSI 2.55.5 (8 parallel workers, default). WP All Import Pro 5.0.6 + WooCommerce Add-on 4.0.6 (defaults).

## What's in here
- original-feed.csv — import this first to establish the 50,000-product catalogue
- updated-feed.csv — the changed feed: 2,500 added, 2,500 removed, 5,000 changed, 40,000 unchanged
- taxonomies.json, ssi-import-config.json, wpai-template-export.json
- results-ssi.json (2m27s, 0MB disk) / results-wpai.json (20h11m, 6.1GB disk)
- benchmark-runner.py, MANUAL-COMMANDS.md, README.md

## How to reproduce — Super Speedy Imports
1. Clean WooCommerce site with Super Speedy Imports installed.
2. Register the taxonomies first: `wp ssi import-taxonomies taxonomies.json` (product_cat, product_brand, pa_color, pa_size).
3. Create + configure the import: `wp ssi create benchmark product /path/to/original-feed.csv ssi-import-config.json`
4. Run it: `time wp ssi <id> --workers=8`
   Then run the UPDATE: SSI with `wp ssi <id> --file=/path/to/updated-feed.csv`;
   WP All Import Pro by overwriting the original file's contents with updated-feed.csv and
   re-running the same import (WPAI has no --file flag). Enable 'delete missing records → trash'
   in both so the 2,500 removed SKUs get trashed.

## How to reproduce — WP All Import Pro
WP All Import Pro can't create an import with a mapping from the CLI, so:
1. wp-admin → All Import → New Import, upload original-feed.csv.
2. Map columns to WooCommerce fields (or import wpai-template-export.json if your version supports it — it's the exact template we used).
3. Run for a clean timing: `time wp all-import run <id>`

## Telemetry tooling
- benchmark-runner.py — the Python orchestrator (snapshot restore, sar, response-time probes, run, export).
- MANUAL-COMMANDS.md — exact shell commands for each run.
- README.md — full explanation of the runner.

## Our measured results
results-ssi.json / results-wpai.json hold the exact timings, throughput, disk deltas
and per-stage breakdowns from our runs. Reproduce it and tell us if you see different numbers.
