Skip to content

Performance Test Results

Project Information

Description:

This performance test compares plain Nuxt (baseline without i18n), i18n-micro, and i18n (nuxtjs/i18n v10). The plain-nuxt fixture serves as a baseline: it loads data directly from JSON files and displays the same content as i18n fixtures, but without any internationalization module. The main focus is to evaluate build times, memory usage, CPU usage, and server performance under stress. Results show the overhead introduced by each i18n solution compared to the baseline.

Important Note:

The i18n-micro example simplifies the translation structure by consolidating translations. However, i18n-micro is optimized for per-page translations. The plain-nuxt baseline uses the same page structure and data volume for a fair comparison.


Dependency Versions

DependencyVersion
nodev20.19.6
nuxtN/A
nuxt-i18n-micro3.4.0
@nuxtjs/i18ncatalog:

Build Performance for ./test/fixtures/plain-nuxt

  • Build Time: 5.02 seconds
  • Bundle Size: 1.93 MB (code: 1.35 MB, translations: 589.99 KB)
  • Code Bundle: client: 194.81 KB, server: 1.16 MB
  • Max CPU Usage: 230.40%
  • Min CPU Usage: 118.10%
  • Average CPU Usage: 186.02%
  • Max Memory Usage: 657.17 MB
  • Min Memory Usage: 217.77 MB
  • Average Memory Usage: 429.99 MB

Build Performance for ./test/fixtures/i18n

  • Build Time: 77.23 seconds
  • Bundle Size: 57.3 MB (code: 19.24 MB, translations: 38.05 MB)
  • Code Bundle: client: 17.13 MB, server: 2.11 MB
  • Max CPU Usage: 375.80%
  • Min CPU Usage: 19.60%
  • Average CPU Usage: 167.46%
  • Max Memory Usage: 8993.03 MB
  • Min Memory Usage: 265.69 MB
  • Average Memory Usage: 4373.44 MB

Build Performance for ./test/fixtures/i18n-micro

  • Build Time: 7.68 seconds
  • Bundle Size: 62.48 MB (code: 1.51 MB, translations: 60.97 MB)
  • Code Bundle: client: 243.72 KB, server: 1.28 MB
  • Max CPU Usage: 249.70%
  • Min CPU Usage: 115.00%
  • Average CPU Usage: 191.59%
  • Max Memory Usage: 1444.33 MB
  • Min Memory Usage: 219.02 MB
  • Average Memory Usage: 698.04 MB

Build Performance Summary

ProjectBuild TimeCode BundleTranslationsTotal
plain-nuxt (baseline)5.02s1.35 MB589.99 KB1.93 MB
i18n v1077.23s19.24 MB38.05 MB57.3 MB
i18n-micro7.68s1.51 MB60.97 MB62.48 MB

Note: "Code Bundle" = JavaScript/CSS code. "Translations" = JSON translation files in locales directories. i18n-micro stores translations as lazy-loaded JSON files, while i18n v10 compiles them into JS bundles.

Build Time Comparison

Loading chart...

Bundle Size Comparison (Code vs Translations)

Loading chart...

Code Bundle Comparison (lower is better):

  • i18n v10 vs baseline: 17.89 MB larger
  • i18n-micro vs baseline: 164.23 KB larger
  • i18n-micro vs i18n v10: 17.73 MB smaller

Stress Test Results for plain-nuxt

Resource Usage

  • Max CPU Usage: 136.80%
  • Average CPU Usage: 93.96%
  • Max Memory Usage: 259.63 MB
  • Average Memory Usage: 211.58 MB

Artillery Results

  • Test Duration: 68.26 seconds
  • Requests per Second: 311.00
  • Error Rate: 0.00%

Latency (Artillery)

MetricValue
Average303.20 ms
Min0.00 ms
Max2346.00 ms
P5034.10 ms
P952322.10 ms
P992322.10 ms

Autocannon Results (10 connections, 10s)

MetricValue
Requests/sec (avg)183.90
Latency avg53.70 ms
Latency P5052.00 ms
Latency P9563.00 ms
Latency P9969.00 ms
Latency max164.00 ms
Throughput57.02 MB/s
Errors0

📊 Load Summary - plain-nuxt

3,6363,571 completed311343
vusers created98.21% / 1.79% failedaverage req/speak req/s

📈 Traffic Profile Over Time

Loading chart...

⏱️ Response Time P95 Over Time

Loading chart...
📋 Detailed Time Series Data
TimeRequest RateResponse P95VUsers ActiveVUsers Created
Invalid Date66 req/s8 ms011
Invalid Date273 req/s296 ms36384
Invalid Date342 req/s854 ms38600
Invalid Date342 req/s1526 ms39600
Invalid Date342 req/s2144 ms38600
Invalid Date343 req/s2322 ms33600
Invalid Date343 req/s2322 ms7600
Invalid Date321 req/s2322 ms0241

Stress Test Results for i18n

Resource Usage

  • Max CPU Usage: 167.70%
  • Average CPU Usage: 124.57%
  • Max Memory Usage: 1197.92 MB
  • Average Memory Usage: 738.19 MB

Artillery Results

  • Test Duration: 75.42 seconds
  • Requests per Second: 51.00
  • Error Rate: 0.00%

Latency (Artillery)

MetricValue
Average1131.10 ms
Min14.00 ms
Max9893.00 ms
P50620.30 ms
P955168.00 ms
P998692.80 ms

Autocannon Results (10 connections, 10s)

MetricValue
Requests/sec (avg)12.40
Latency avg779.85 ms
Latency P50769.00 ms
Latency P951424.00 ms
Latency P992195.00 ms
Latency max2550.00 ms
Throughput3.93 MB/s
Errors0

📊 Load Summary - i18n

3,63653 completed5169
vusers created1.46% / 98.54% failedaverage req/speak req/s

📈 Traffic Profile Over Time

Loading chart...

⏱️ Response Time P95 Over Time

Loading chart...
📋 Detailed Time Series Data
TimeRequest RateResponse P95VUsers ActiveVUsers Created
Invalid Date25 req/s925 ms1818
Invalid Date69 req/s4317 ms438472
Invalid Date68 req/s8521 ms21600
Invalid Date60 req/s0 ms18600
Invalid Date60 req/s0 ms0600
Invalid Date60 req/s0 ms0600
Invalid Date60 req/s0 ms0600
Invalid Date60 req/s0 ms0146
Invalid Date0 req/s0 ms00

Stress Test Results for i18n-micro

Resource Usage

  • Max CPU Usage: 131.90%
  • Average CPU Usage: 91.73%
  • Max Memory Usage: 354.14 MB
  • Average Memory Usage: 290.90 MB

Artillery Results

  • Test Duration: 69.14 seconds
  • Requests per Second: 300.00
  • Error Rate: 0.00%

Latency (Artillery)

MetricValue
Average391.80 ms
Min0.00 ms
Max2585.00 ms
P5036.20 ms
P952566.30 ms
P992566.30 ms

Autocannon Results (10 connections, 10s)

MetricValue
Requests/sec (avg)181.70
Latency avg54.54 ms
Latency P5048.00 ms
Latency P9597.00 ms
Latency P99102.00 ms
Latency max269.00 ms
Throughput57.59 MB/s
Errors0

📊 Load Summary - i18n-micro

3,6363,295 completed300318
vusers created90.62% / 9.38% failedaverage req/speak req/s

📈 Traffic Profile Over Time

Loading chart...

⏱️ Response Time P95 Over Time

Loading chart...
📋 Detailed Time Series Data
TimeRequest RateResponse P95VUsers ActiveVUsers Created
Invalid Date219 req/s478 ms55313
Invalid Date316 req/s1864 ms94600
Invalid Date315 req/s2566 ms71600
Invalid Date316 req/s2566 ms15600
Invalid Date318 req/s2566 ms0600
Invalid Date318 req/s2516 ms0600
Invalid Date299 req/s2516 ms0323

Stress Test Summary

Artillery Results

ProjectAvg ResponseP95P99RPSError Rate
plain-nuxt303.20 ms2322.10 ms2322.10 ms311.000.00%
i18n v101131.10 ms5168.00 ms8692.80 ms51.000.00%
i18n-micro391.80 ms2566.30 ms2566.30 ms300.000.00%

Autocannon Results (10 connections, 10s)

ProjectAvg LatencyP50P95P99MaxRPS
plain-nuxt53.70 ms52.00 ms63.00 ms69.00 ms164.00 ms183.90
i18n v10779.85 ms769.00 ms1424.00 ms2195.00 ms2550.00 ms12.40
i18n-micro54.54 ms48.00 ms97.00 ms102.00 ms269.00 ms181.70

🏆 Performance Comparison

Throughput (Requests per Second)

Winner: plain-nuxt with 184 RPS

Loading chart...
Loading chart...

Latency Distribution

Winner: plain-nuxt with 53.70 ms avg latency

Loading chart...

Quick Comparison

Metricplain-nuxti18n-v10i18n-microBest
RPS (Autocannon)18412182plain-nuxt
Avg Latency53.70 ms779.85 ms54.54 msplain-nuxt
P99 Latency69.00 ms2195.00 ms102.00 msplain-nuxt
Errors000-

Comparison: plain-nuxt (baseline) vs i18n v10

Metricplain-nuxt (baseline)i18n v10Difference
Max Memory259.63 MB1197.92 MB+938.30 MB
Avg Memory211.58 MB738.19 MB+526.61 MB
Response Avg303.20 ms1131.10 ms+827.90 ms
Response P952322.10 ms5168.00 ms+2845.90 ms
Response P992322.10 ms8692.80 ms+6370.70 ms
RPS (Artillery)311.0051.00-260.00
RPS (Autocannon)183.9012.40-171.50
Latency avg (Autocannon)53.70 ms779.85 ms+726.15 ms

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

Metricplain-nuxt (baseline)i18n-microDifference
Max Memory259.63 MB354.14 MB+94.52 MB
Avg Memory211.58 MB290.90 MB+79.32 MB
Response Avg303.20 ms391.80 ms+88.60 ms
Response P952322.10 ms2566.30 ms+244.20 ms
Response P992322.10 ms2566.30 ms+244.20 ms
RPS (Artillery)311.00300.00-11.00
RPS (Autocannon)183.90181.70-2.20
Latency avg (Autocannon)53.70 ms54.54 ms+0.84 ms

Comparison: i18n v10 vs i18n-micro

Metrici18n v10i18n-microDifference
Max Memory1197.92 MB354.14 MB-843.78 MB
Avg Memory738.19 MB290.90 MB-447.29 MB
Response Avg1131.10 ms391.80 ms-739.30 ms
Response P955168.00 ms2566.30 ms-2601.70 ms
Response P998692.80 ms2566.30 ms-6126.50 ms
RPS (Artillery)51.00300.00+249.00
RPS (Autocannon)12.40181.70+169.30
Latency avg (Autocannon)779.85 ms54.54 ms-725.31 ms

📊 Detailed Performance Analysis

🔍 Test Logic Explanation

The performance tests compare plain-nuxt (baseline), Nuxt I18n Micro, and nuxt-i18n v10. The plain-nuxt fixture loads data directly from JSON files without any i18n module, providing a baseline for measuring i18n overhead.

  1. Build Time: Measures the time required to build each project. Plain-nuxt shows the baseline; i18n modules add overhead for translation processing.
  2. Bundle Size: Measures the total size of client and server bundles.
  3. CPU Usage: Tracks CPU load during build and stress tests.
  4. Memory Usage: Monitors memory consumption. Plain-nuxt establishes the baseline; i18n modules increase memory usage.
  5. Stress Testing: Simulates concurrent traffic using Artillery and Autocannon.
    • Artillery: Warm-up phase (6 seconds, 6 users), Main phase (60 seconds, 60 req/s).
    • Autocannon: 10 connections for 10 seconds, measuring latency percentiles.

🛠 Why This Approach?

By including a plain-nuxt baseline, we can quantify the overhead of each i18n solution. Nuxt I18n Micro is optimized for:

  • Faster Build Times: Lower overhead than nuxt-i18n.
  • Lower Resource Consumption: Closer to plain-nuxt baseline.
  • Better Scalability: Per-page translations for large applications.

Released under the MIT License.