10,000 Products (No Images)

Dave Hilditch •

Deterministic repeat, WebToffee Free 2.6.5: 886.904 seconds for the 10,000-product initial import with a batch size of 100. During the run, CPU averaged 27.60%, RAM averaged 1,136.9 MiB and disk activity averaged 6.23%. After subtracting the measured baseline, the complete job used 14.2561 vCPU-minutes, 55.222 seconds of disk-busy time and 473.780 MiB of writes. The repeat ran on WordPress 7.0.3 and WooCommerce 11.0.0, as stated on the comparison page. Inspect the measured result. The earlier recorded run remains below as separate evidence.

Earlier run, compared with Super Speedy Imports Pro 2.83.0: WebToffee Free 2.6.5 imported 10,000 simple WooCommerce products in 1,016.141 seconds, measured from the browser immediately before starting the import until its completion screen appeared. The plugin reported 1,015 seconds.

Earlier run summary

MetricEarlier run, compared with Super Speedy Imports Pro 2.83.0
Browser wall time1,016.141 s (16m 56.141s)
Plugin-reported time1,015 s
Throughput9.841 feed rows/s
Published products10,000
CorrectnessPassed measured field, taxonomy, attribute and SKU checks
Compared with SSISSI Pro 2.83.0 completed the identical feed in 15.947 s, 63.719× faster

See the Super Speedy Imports result or the direct comparison.

Dataset and configuration

  • Initial feed: 10,000 simple products, 2,644,851 bytes, SHA-256 cd135ff65a4b15a717bc3057a7980f0b42b4d14e08c994541e25d54f90a3f64e.
  • Update feed: 10,000 rows, 2,816,718 bytes, SHA-256 43df664ec47e188443b6fbb4e978808c37c52f6935865ff1d95df9b47ca85b26.
  • Update changes: 2,500 existing products changed, 1,000 products added, 1,000 original products omitted, and 6,500 retained products unchanged.
  • Mapped data: title, descriptions, SKU, regular and sale prices, weight, category, brand, global colour and global size.
  • Edition: official WordPress.org package, Product Import Export for WooCommerce Free 2.6.5.
  • Package SHA-256: 09d2dfc17c2e091b0377c4b8a5869e701071e24625d02f4c8d75c12035105f23b.
  • Matching: SKU, with existing matches configured to update.
  • Batch size: 100, increased from the default 10.
  • Mapping: 13 required product fields mapped explicitly.
  • Requests (earlier run): 100 sequential import batches plus one download request, all HTTP 200.

Environment (earlier run)

ComponentValue
ServerHetzner benchmark VPS, 4 vCPU, 8,121,954,304 bytes RAM
StackPHP 8.2.33, MariaDB 10.11.18, WooCommerce 10.3.8
IsolationHetzner snapshot 390805640 restored before each plugin
DatasetThe exact same CSV bytes were supplied to both plugins
ImagesNone, so the test isolates CSV parsing and WooCommerce data writes

Correctness

The finished catalogue contained 10,000 unique published SKUs. All 10,000 products had both global attributes and relationships to product category, product brand, colour and size. The screenshots below are benchmark evidence, not illustrative examples.

WebToffee Free initial import completion screen
WebToffee Free initial import completion screen.

Post-import catalogue evidence

These screenshots were taken in the earlier run, immediately after the plugin reported completion. They show the WooCommerce product total, category and brand counts, global attributes, and the colour and size term counts.

WebToffee Free initial import WooCommerce product count
WebToffee Free initial import: products and status counts.
WebToffee Free initial import product category counts
WebToffee Free initial import: product categories and counts.
WebToffee Free initial import product brand counts
WebToffee Free initial import: brands and counts.
WebToffee Free initial import global product attributes
WebToffee Free initial import: global product attributes.
WebToffee Free initial import colour term counts
WebToffee Free initial import: colour terms and counts.
WebToffee Free initial import size term counts
WebToffee Free initial import: size terms and counts.

Reproduce

Download the reproduction bundle, including the exact CSV, manifest, SHA-256 hashes, capture metadata and sar telemetry.

Caveats

The earlier run’s figure is browser wall time because that covers the complete user-visible operation. In the earlier run, a test-site-only nginx rate-limit bypass was present, but it was non-binding: the batches were sequential, no more than one started in any second, and every response returned HTTP 200. The bypass was removed after the benchmark. This is a controlled result, not a promise of identical timing on every host.

Comments

▲
▼
1/1