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.20.1
nuxtN/A
nuxt-i18n-micro3.19.0
@nuxtjs/i18ncatalog:

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

  • Build Time: 5.37 seconds
  • Bundle Size: 1.94 MB (code: 1.36 MB, translations: 589.99 KB)
  • Code Bundle: client: 194.8 KB, server: 1.17 MB
  • Max CPU Usage: 209.60%
  • Min CPU Usage: 105.20%
  • Average CPU Usage: 183.86%
  • Max Memory Usage: 757.78 MB
  • Min Memory Usage: 165.75 MB
  • Average Memory Usage: 441.48 MB

Build Performance for ./test/fixtures/i18n

  • Build Time: 68.28 seconds
  • Bundle Size: 57.3 MB (code: 19.24 MB, translations: 38.06 MB)
  • Code Bundle: client: 17.13 MB, server: 2.12 MB
  • Max CPU Usage: 488.80%
  • Min CPU Usage: 31.80%
  • Average CPU Usage: 158.76%
  • Max Memory Usage: 8096.86 MB
  • Min Memory Usage: 165.45 MB
  • Average Memory Usage: 4127.67 MB

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

  • Build Time: 8.78 seconds
  • Bundle Size: 57.27 MB (code: 1.51 MB, translations: 55.76 MB)
  • Code Bundle: client: 243.68 KB, server: 1.27 MB
  • Max CPU Usage: 295.00%
  • Min CPU Usage: 125.50%
  • Average CPU Usage: 185.68%
  • Max Memory Usage: 1350.25 MB
  • Min Memory Usage: 186.80 MB
  • Average Memory Usage: 657.72 MB

Build Performance Summary

ProjectBuild TimeCode BundleTranslationsTotal
plain-nuxt (baseline)5.37s1.36 MB589.99 KB1.94 MB
i18n v1068.28s19.24 MB38.06 MB57.3 MB
i18n-micro8.78s1.51 MB55.76 MB57.27 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.88 MB larger
  • i18n-micro vs baseline: 157.08 KB larger
  • i18n-micro vs i18n v10: 17.73 MB smaller

Stress Test Results for plain-nuxt

Resource Usage

  • Max CPU Usage: 140.90%
  • Average CPU Usage: 99.68%
  • Max Memory Usage: 223.69 MB
  • Average Memory Usage: 177.04 MB

Artillery Results

  • Test Duration: 69.09 seconds
  • Requests per Second: 287.00
  • Error Rate: 0.00%

Latency (Artillery)

MetricValue
Average387.60 ms
Min0.00 ms
Max2564.00 ms
P5037.00 ms
P952515.50 ms
P992515.50 ms

Autocannon Results (10 connections, 10s)

MetricValue
Requests/sec (avg)168.10
Latency avg58.82 ms
Latency P5057.00 ms
Latency P9577.00 ms
Latency P9993.00 ms
Latency max129.00 ms
Throughput52.12 MB/s
Errors0

📊 Load Summary - plain-nuxt

3,6363,335 completed287321
vusers created91.72% / 8.28% 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 Date107 req/s40 ms1476
Invalid Date318 req/s1130 ms88600
Invalid Date319 req/s2466 ms82600
Invalid Date321 req/s2516 ms42600
Invalid Date320 req/s2516 ms4600
Invalid Date321 req/s2516 ms0600
Invalid Date319 req/s2516 ms0560
Invalid Date275 req/s2466 ms00

Stress Test Results for i18n

Resource Usage

  • Max CPU Usage: 157.40%
  • Average CPU Usage: 121.28%
  • Max Memory Usage: 889.73 MB
  • Average Memory Usage: 548.46 MB

Artillery Results

  • Test Duration: 79.21 seconds
  • Requests per Second: 26.00
  • Error Rate: 0.00%

Latency (Artillery)

MetricValue
Average992.00 ms
Min14.00 ms
Max7977.00 ms
P50608.00 ms
P953605.50 ms
P997117.00 ms

Autocannon Results (10 connections, 10s)

MetricValue
Requests/sec (avg)12.10
Latency avg782.77 ms
Latency P50771.00 ms
Latency P95923.00 ms
Latency P991088.00 ms
Latency max1088.00 ms
Throughput3.83 MB/s
Errors0

📊 Load Summary - i18n

3,63648 completed2672
vusers created1.32% / 98.68% 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 Date54 req/s2187 ms174193
Invalid Date72 req/s5712 ms297600
Invalid Date60 req/s0 ms8600
Invalid Date60 req/s0 ms5600
Invalid Date60 req/s0 ms0600
Invalid Date60 req/s0 ms0600
Invalid Date60 req/s0 ms0443
Invalid Date0 req/s0 ms00
Invalid Date0 req/s0 ms00

Stress Test Results for i18n-micro

Resource Usage

  • Max CPU Usage: 134.10%
  • Average CPU Usage: 89.28%
  • Max Memory Usage: 501.33 MB
  • Average Memory Usage: 254.83 MB

Artillery Results

  • Test Duration: 65.44 seconds
  • Requests per Second: 323.00
  • Error Rate: 0.00%

Latency (Artillery)

MetricValue
Average10.00 ms
Min0.00 ms
Max175.00 ms
P508.90 ms
P9525.80 ms
P9934.80 ms

Autocannon Results (10 connections, 10s)

MetricValue
Requests/sec (avg)213.70
Latency avg46.17 ms
Latency P5040.00 ms
Latency P9582.00 ms
Latency P9986.00 ms
Latency max117.00 ms
Throughput67.6 MB/s
Errors0

📊 Load Summary - i18n-micro

3,6363,636 completed323368
vusers created100.00% / 0.00% 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 Date7 req/s11 ms55
Invalid Date254 req/s41 ms5328
Invalid Date366 req/s25 ms0600
Invalid Date360 req/s14 ms0600
Invalid Date360 req/s20 ms0600
Invalid Date360 req/s13 ms0600
Invalid Date360 req/s13 ms0600
Invalid Date368 req/s12 ms0303

Stress Test Summary

Artillery Results

ProjectAvg ResponseP95P99RPSError Rate
plain-nuxt387.60 ms2515.50 ms2515.50 ms287.000.00%
i18n v10992.00 ms3605.50 ms7117.00 ms26.000.00%
i18n-micro10.00 ms25.80 ms34.80 ms323.000.00%

Autocannon Results (10 connections, 10s)

ProjectAvg LatencyP50P95P99MaxRPS
plain-nuxt58.82 ms57.00 ms77.00 ms93.00 ms129.00 ms168.10
i18n v10782.77 ms771.00 ms923.00 ms1088.00 ms1088.00 ms12.10
i18n-micro46.17 ms40.00 ms82.00 ms86.00 ms117.00 ms213.70

🏆 Performance Comparison

Throughput (Requests per Second)

Winner: i18n-micro with 214 RPS

Loading chart...
Loading chart...

Latency Distribution

Winner: i18n-micro with 46.17 ms avg latency

Loading chart...

Quick Comparison

Metricplain-nuxti18n-v10i18n-microBest
RPS (Autocannon)16812214i18n-micro
Avg Latency58.82 ms782.77 ms46.17 msi18n-micro
P99 Latency93.00 ms1088.00 ms86.00 msi18n-micro
Errors000-

Comparison: plain-nuxt (baseline) vs i18n v10

Metricplain-nuxt (baseline)i18n v10Difference
Max Memory223.69 MB889.73 MB+666.05 MB
Avg Memory177.04 MB548.46 MB+371.42 MB
Response Avg387.60 ms992.00 ms+604.40 ms
Response P952515.50 ms3605.50 ms+1090.00 ms
Response P992515.50 ms7117.00 ms+4601.50 ms
RPS (Artillery)287.0026.00-261.00
RPS (Autocannon)168.1012.10-156.00
Latency avg (Autocannon)58.82 ms782.77 ms+723.95 ms

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

Metricplain-nuxt (baseline)i18n-microDifference
Max Memory223.69 MB501.33 MB+277.64 MB
Avg Memory177.04 MB254.83 MB+77.79 MB
Response Avg387.60 ms10.00 ms-377.60 ms
Response P952515.50 ms25.80 ms-2489.70 ms
Response P992515.50 ms34.80 ms-2480.70 ms
RPS (Artillery)287.00323.00+36.00
RPS (Autocannon)168.10213.70+45.60
Latency avg (Autocannon)58.82 ms46.17 ms-12.65 ms

Comparison: i18n v10 vs i18n-micro

Metrici18n v10i18n-microDifference
Max Memory889.73 MB501.33 MB-388.41 MB
Avg Memory548.46 MB254.83 MB-293.63 MB
Response Avg992.00 ms10.00 ms-982.00 ms
Response P953605.50 ms25.80 ms-3579.70 ms
Response P997117.00 ms34.80 ms-7082.20 ms
RPS (Artillery)26.00323.00+297.00
RPS (Autocannon)12.10213.70+201.60
Latency avg (Autocannon)782.77 ms46.17 ms-736.60 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.