Skip to content

Performance Test Results

Project Information

  • plain-nuxt: ./test/fixtures/plain-nuxt
  • i18n-micro: ./test/fixtures/i18n-micro
  • i18n: ./test/fixtures/i18n
  • CLI: pnpm -C scripts cli performance / pnpm test:performance

Description

Compares plain Nuxt (baseline without an i18n module), i18n-micro, and @nuxtjs/i18n v10.6 under one shared dictionary profile.

Focus: build time, peak RSS, deployable code vs translations vs total, and server behaviour under Artillery + Autocannon.

Methodology notes

  • Metrics are means of 3 consecutive runs per fixture (fixture A ×3, then B ×3, then C ×3 — not interleaved).
  • Translations include locale JSON under locales/ / _locales/ / translations/, everything under chunks/raw/, and matching locale chunks. Older reports that showed @nuxtjs/i18n “translations: 0 B” and a huge “code” column were counting message chunks as app code.
  • plain-nuxt serves the same leaf volume as static public/translations JSON (not static JS imports). Under Artillery that baseline is I/O-heavy; it is not “i18n overhead”, it is the cost of fetching large JSON per request.

Runs

All metrics below are means across 3 runs.


Fixture profile

KnobValue
Locales4 (en, de, ru, fr)
Pages2 (index, page)
Index treedepth 5, branch 716,807 leaf keys / locale
Secondary pagesdepth 5, branch 67,776 leaf keys / page / locale
GoalDefault CLI profile (--locales 4 --keys 10000); raise knobs for regression-radar loads

Dictionaries come from test/fixtures/perf-shared/runtime.json (written by the CLI) so all three fixtures stay aligned.

Dependency Versions

DependencyVersion
nodev22.22.1
nuxt4.5.1
nuxt-i18n-micro3.25.0
@nuxtjs/i18n10.6.0

Source dictionaries (pre-build)

FixtureOn-disk locale data
plain-nuxt98.42 MB
i18n-v106.8 MB
i18n-micro6.8 MB

From runtime.json (4 locales, 16,807 index leaf keys).

Build Performance for test/fixtures/plain-nuxt

  • Build Time: 5.32 seconds
  • Bundle Size: 8.33 MB (code: 1.53 MB, translations: 6.8 MB)
  • Code Bundle: client: 201.88 KB, server: 1.33 MB
  • Max / Avg CPU: 207.10% / 166.29%
  • Max / Avg Memory: 810.26 MB / 585.14 MB

Build Performance for test/fixtures/i18n

  • Build Time: 8.34 seconds
  • Bundle Size: 9.37 MB (code: 2.16 MB, translations: 7.21 MB)
  • Code Bundle: client: 315.17 KB, server: 1.86 MB
  • Max / Avg CPU: 203.97% / 164.39%
  • Max / Avg Memory: 1820.57 MB / 1177.11 MB

Build Performance for test/fixtures/i18n-micro

  • Build Time: 5.34 seconds
  • Bundle Size: 8.54 MB (code: 1.74 MB, translations: 6.8 MB)
  • Code Bundle: client: 272.93 KB, server: 1.48 MB
  • Max / Avg CPU: 203.60% / 177.27%
  • Max / Avg Memory: 1065.16 MB / 667.77 MB

Build Performance Summary (mean of 3 runs)

ProjectBuild TimeCode BundleTranslationsTotal
plain-nuxt (baseline)5.32s1.53 MB6.8 MB8.33 MB
i18n-v108.34s2.16 MB7.21 MB9.37 MB
i18n-micro5.34s1.74 MB6.8 MB8.54 MB

“Total” = what gets deployed (code + translations). Micro keeps translations as lazy JSON; @nuxtjs/i18n still ships a larger code graph even after message chunks are classified correctly.

Loading chart...
Loading chart...
Loading chart...
Loading chart...

Stress Test Results for plain-nuxt

Resource Usage

  • Max / Avg CPU: 132.80% / 86.34%
  • Max / Avg Memory: 506.66 MB / 332.97 MB

Artillery

  • Duration: 79.64s · RPS: 109.00 · Error rate: 0.00%
  • Latency avg / p50 / p95 / p99: 1193.80 / 604.00 / 6440.57 / 7658.90 ms

Autocannon (10c / 10s)

  • RPS: 65.30 · Latency avg / p50 / p95 / p99: 151.64 / 150.00 / 178.67 / 191.33 ms · Errors: 0
Loading chart...
Loading chart...

Stress Test Results for i18n-v10

Resource Usage

  • Max / Avg CPU: 128.90% / 81.95%
  • Max / Avg Memory: 462.53 MB / 335.30 MB

Artillery

  • Duration: 79.28s · RPS: 142.67 · Error rate: 0.00%
  • Latency avg / p50 / p95 / p99: 955.83 / 125.20 / 7709.80 / 7865.60 ms

Autocannon (10c / 10s)

  • RPS: 71.60 · Latency avg / p50 / p95 / p99: 138.80 / 117.33 / 291.67 / 332.33 ms · Errors: 0
Loading chart...
Loading chart...

Stress Test Results for i18n-micro

Resource Usage

  • Max / Avg CPU: 126.17% / 78.28%
  • Max / Avg Memory: 302.30 MB / 229.25 MB

Artillery

  • Duration: 73.10s · RPS: 275.33 · Error rate: 0.00%
  • Latency avg / p50 / p95 / p99: 483.43 / 53.37 / 3777.97 / 4203.20 ms

Autocannon (10c / 10s)

  • RPS: 161.67 · Latency avg / p50 / p95 / p99: 62.04 / 49.67 / 131.00 / 217.67 ms · Errors: 0
Loading chart...
Loading chart...

Stress Test Summary (mean of 3 runs)

Artillery

ProjectAvg ResponseP95P99RPSError Rate
plain-nuxt1193.80 ms6440.57 ms7658.90 ms109.000.00%
i18n-v10955.83 ms7709.80 ms7865.60 ms142.670.00%
i18n-micro483.43 ms3777.97 ms4203.20 ms275.330.00%

Autocannon

ProjectAvg LatencyP50P95P99RPS
plain-nuxt151.64 ms150.00 ms178.67 ms191.33 ms65.30
i18n-v10138.80 ms117.33 ms291.67 ms332.33 ms71.60
i18n-micro62.04 ms49.67 ms131.00 ms217.67 ms161.67

Performance Comparison

Throughput (Requests per Second)

Winner: i18n-micro with 162 RPS

Loading chart...
Loading chart...

Latency Distribution

Winner: i18n-micro with 62.04 ms avg latency

Loading chart...

Quick Comparison

Metricplain-nuxti18n-v10i18n-microBest
RPS (Autocannon)6572162i18n-micro
Avg Latency151.64 ms138.80 ms62.04 msi18n-micro
P99 Latency191.33 ms332.33 ms217.67 msplain-nuxt
Errors000-

Comparison: plain-nuxt (baseline) vs i18n v10

Metricplain-nuxt (baseline)i18n v10Difference
Max Memory506.66 MB462.53 MB-44.13 MB
Avg Memory332.97 MB335.30 MB+2.33 MB
Response Avg1193.80 ms955.83 ms-237.97 ms
Response P956440.57 ms7709.80 ms+1269.23 ms
RPS (Artillery)109.00142.67+33.67
RPS (Autocannon)65.3071.60+6.30
Latency avg (AC)151.64 ms138.80 ms-12.84 ms

Comparison: plain-nuxt (baseline) vs i18n-micro

Metricplain-nuxt (baseline)i18n-microDifference
Max Memory506.66 MB302.30 MB-204.36 MB
Avg Memory332.97 MB229.25 MB-103.72 MB
Response Avg1193.80 ms483.43 ms-710.37 ms
Response P956440.57 ms3777.97 ms-2662.60 ms
RPS (Artillery)109.00275.33+166.33
RPS (Autocannon)65.30161.67+96.37
Latency avg (AC)151.64 ms62.04 ms-89.60 ms

Comparison: i18n v10 vs i18n-micro

Metrici18n v10i18n-microDifference
Max Memory462.53 MB302.30 MB-160.23 MB
Avg Memory335.30 MB229.25 MB-106.05 MB
Response Avg955.83 ms483.43 ms-472.40 ms
Response P957709.80 ms3777.97 ms-3931.83 ms
RPS (Artillery)142.67275.33+132.67
RPS (Autocannon)71.60161.67+90.07
Latency avg (AC)138.80 ms62.04 ms-76.76 ms

Notes

  • Shared profile: 4 locales × 2 pages × ~16.8k index leaves.
  • Artillery: 6s warm-up @6 VU/s + 60s main @60 VU/s. Autocannon: 10 connections × 10s.
  • Re-run: pnpm test:performance or pnpm -C scripts cli performance --locales N --keys K --only all|micro|i18n|plain --runs N.

Released under the MIT License.