Benchmarks
How many database queries PerfLocale runs on a page, and how that compares with everything else on the page.
PerfLocale’s own queries
Each bar is one page. The teal part is the queries PerfLocale’s own code ran; the grey part is everything else on the page — WordPress, WooCommerce and the other plugins. Every query was traced back to the code that issued it./de/4 of 7/de/4 of 6/de/4 of 7/de/19 of 82/de/20 of 92/de/19 of 95
| Page | With Redis: PerfLocale | With Redis: whole page | No object cache: PerfLocale | No object cache: whole page |
|---|---|---|---|---|
| Home page | 2 | 5 | 16 | 93 |
Home page /de/ | 4 | 7 | 19 | 82 |
Category archive /de/ | 4 | 6 | 20 | 92 |
Product page /de/ | 4 | 7 | 19 | 95 |
With an object cache, PerfLocale runs 2 queries on a page in the default language and 4 on a translated one: a batched slug lookup, plus one more — the page’s own slug on a category or product page, or the list of posts excluded from hreflang on the home page. Translated pages add two block-template translation lookups. Without an object cache it runs 16 to 20, largely reading its own cached data back from the database, which is why a persistent object cache is the biggest single improvement measured here.
The page with and without PerfLocale
A second way to look at it: switch PerfLocale off and count the same page again. This works only for pages in the default language — without PerfLocale, the translated pages do not exist.
| Page (default language) | With Redis | No object cache |
|---|---|---|
| Home page | 3 → 5 (+2) | 77 → 89 (+12) |
| Category archive | 2 → 3 (+1) | 80 → 94 (+14) |
| Product page | 3 → 4 (+1) | 88 → 100 (+12) |
With Redis the difference is exactly PerfLocale’s own count on these pages (2, 1 and 1). Without an object cache it is smaller — 12 to 14, against 16 to 18 of PerfLocale’s own — because WooCommerce then runs 4 queries fewer on each of these pages, reading posts and settings PerfLocale has already loaded. WordPress core runs the same number either way. Each page was requested by ID with redirects off, so the measurement with PerfLocale and the one without count exactly the same page.
How this was measured
- Site: a copy of our WooCommerce test site — the Twenty Twenty-Five block theme, three languages (English, German, Polish), language prefixes in the URL.
- Software: PerfLocale 1.0.6, WordPress 7.1.1, PHP 8.4, MySQL 8.0, Redis with the Redis Object Cache plugin 2.8.0.
- Other active plugins: WooCommerce 10.9.4, Rank Math 1.0.275, Advanced Custom Fields 6.8.6, Contact Form 7 6.1.6, Classic Editor, Plugin Check and Code Profiler Pro. Of these, only WooCommerce, Rank Math and Advanced Custom Fields ran queries on these pages.
- Method: WordPress’s
SAVEQUERIESrecorded every query, and each one was attributed to the plugin, theme or core file that issued it. Every page was requested twice to warm up, then five more times; the counts were identical on all five. - Date: 20 September 2026.
Why queries and not milliseconds? A query count comes out the same on any hardware, so you can check it on your own site. Timings depend on the server, the hosting and everything else installed, so they are deliberately not quoted here.
Your numbers will differ: every theme and plugin adds queries of its own. To count them on your site, use the snippet in Measuring your own numbers.