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.9.0
@nuxtjs/i18ncatalog:

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

  • Build Time: 6.50 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: 195.10%
  • Min CPU Usage: 57.30%
  • Average CPU Usage: 144.72%
  • Max Memory Usage: 744.58 MB
  • Min Memory Usage: 219.83 MB
  • Average Memory Usage: 488.47 MB

Build Performance for ./test/fixtures/i18n

  • Build Time: 82.26 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: 419.20%
  • Min CPU Usage: 15.50%
  • Average CPU Usage: 139.08%
  • Max Memory Usage: 9117.41 MB
  • Min Memory Usage: 277.22 MB
  • Average Memory Usage: 3964.05 MB

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

  • Build Time: 14.95 seconds
  • Bundle Size: 57.24 MB (code: 1.48 MB, translations: 55.76 MB)
  • Code Bundle: client: 232.73 KB, server: 1.25 MB
  • Max CPU Usage: 243.00%
  • Min CPU Usage: 7.50%
  • Average CPU Usage: 96.66%
  • Max Memory Usage: 1174.55 MB
  • Min Memory Usage: 83.13 MB
  • Average Memory Usage: 416.37 MB

Build Performance Summary

ProjectBuild TimeCode BundleTranslationsTotal
plain-nuxt (baseline)6.50s1.35 MB589.99 KB1.93 MB
i18n v1082.26s19.24 MB38.05 MB57.3 MB
i18n-micro14.95s1.48 MB55.76 MB57.24 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: 131.49 KB larger
  • i18n-micro vs i18n v10: 17.76 MB smaller

Stress Test Results for plain-nuxt

Resource Usage

  • Max CPU Usage: 146.40%
  • Average CPU Usage: 86.57%
  • Max Memory Usage: 324.30 MB
  • Average Memory Usage: 218.66 MB

Artillery Results

  • Test Duration: 70.26 seconds
  • Requests per Second: 274.00
  • Error Rate: 0.00%

Latency (Artillery)

MetricValue
Average453.20 ms
Min0.00 ms
Max5310.00 ms
P5037.70 ms
P952780.00 ms
P993905.80 ms

Autocannon Results (10 connections, 10s)

MetricValue
Requests/sec (avg)154.00
Latency avg64.13 ms
Latency P5054.00 ms
Latency P95163.00 ms
Latency P99216.00 ms
Latency max330.00 ms
Throughput47.74 MB/s
Errors0

📊 Load Summary - plain-nuxt

3,6363,047 completed274333
vusers created83.80% / 16.20% 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 Date183 req/s66 ms19116
Invalid Date291 req/s1864 ms138600
Invalid Date283 req/s3135 ms113600
Invalid Date312 req/s2836 ms0600
Invalid Date333 req/s2369 ms0600
Invalid Date289 req/s2780 ms75600
Invalid Date223 req/s4771 ms0520
Invalid Date283 req/s2417 ms00

Stress Test Results for i18n

Resource Usage

  • Max CPU Usage: 162.80%
  • Average CPU Usage: 112.41%
  • Max Memory Usage: 1094.72 MB
  • Average Memory Usage: 716.95 MB

Artillery Results

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

Latency (Artillery)

MetricValue
Average1177.10 ms
Min17.00 ms
Max9978.00 ms
P50645.60 ms
P955065.60 ms
P998692.80 ms

Autocannon Results (10 connections, 10s)

MetricValue
Requests/sec (avg)11.70
Latency avg804.99 ms
Latency P50791.00 ms
Latency P951399.00 ms
Latency P991739.00 ms
Latency max2110.00 ms
Throughput3.71 MB/s
Errors0

📊 Load Summary - i18n

3,63651 completed5175
vusers created1.40% / 98.60% 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 Date23 req/s1108 ms2330
Invalid Date75 req/s6065 ms532563
Invalid Date65 req/s758 ms0600
Invalid Date60 req/s0 ms14600
Invalid Date60 req/s0 ms8600
Invalid Date60 req/s0 ms0600
Invalid Date60 req/s0 ms0600
Invalid Date43 req/s0 ms043
Invalid Date0 req/s0 ms00

Stress Test Results for i18n-micro

Resource Usage

  • Max CPU Usage: 131.00%
  • Average CPU Usage: 86.46%
  • Max Memory Usage: 343.73 MB
  • Average Memory Usage: 274.70 MB

Artillery Results

  • Test Duration: 69.81 seconds
  • Requests per Second: 278.00
  • Error Rate: 0.00%

Latency (Artillery)

MetricValue
Average437.20 ms
Min1.00 ms
Max2910.00 ms
P5039.30 ms
P952780.00 ms
P992836.20 ms

Autocannon Results (10 connections, 10s)

MetricValue
Requests/sec (avg)150.70
Latency avg65.70 ms
Latency P5057.00 ms
Latency P95119.00 ms
Latency P99141.00 ms
Latency max363.00 ms
Throughput47.77 MB/s
Errors0

📊 Load Summary - i18n-micro

3,6363,090 completed278300
vusers created84.98% / 15.02% 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 Date195 req/s518 ms58245
Invalid Date293 req/s2276 ms135600
Invalid Date297 req/s2780 ms68600
Invalid Date298 req/s2780 ms9600
Invalid Date298 req/s2780 ms0600
Invalid Date300 req/s2780 ms0600
Invalid Date282 req/s2725 ms0391
Invalid Date267 req/s2466 ms00

Stress Test Summary

Artillery Results

ProjectAvg ResponseP95P99RPSError Rate
plain-nuxt453.20 ms2780.00 ms3905.80 ms274.000.00%
i18n v101177.10 ms5065.60 ms8692.80 ms51.000.00%
i18n-micro437.20 ms2780.00 ms2836.20 ms278.000.00%

Autocannon Results (10 connections, 10s)

ProjectAvg LatencyP50P95P99MaxRPS
plain-nuxt64.13 ms54.00 ms163.00 ms216.00 ms330.00 ms154.00
i18n v10804.99 ms791.00 ms1399.00 ms1739.00 ms2110.00 ms11.70
i18n-micro65.70 ms57.00 ms119.00 ms141.00 ms363.00 ms150.70

🏆 Performance Comparison

Throughput (Requests per Second)

Winner: plain-nuxt with 154 RPS

Loading chart...
Loading chart...

Latency Distribution

Winner: plain-nuxt with 64.13 ms avg latency

Loading chart...

Quick Comparison

Metricplain-nuxti18n-v10i18n-microBest
RPS (Autocannon)15412151plain-nuxt
Avg Latency64.13 ms804.99 ms65.70 msplain-nuxt
P99 Latency216.00 ms1739.00 ms141.00 msplain-nuxt
Errors000-

Comparison: plain-nuxt (baseline) vs i18n v10

Metricplain-nuxt (baseline)i18n v10Difference
Max Memory324.30 MB1094.72 MB+770.42 MB
Avg Memory218.66 MB716.95 MB+498.29 MB
Response Avg453.20 ms1177.10 ms+723.90 ms
Response P952780.00 ms5065.60 ms+2285.60 ms
Response P993905.80 ms8692.80 ms+4787.00 ms
RPS (Artillery)274.0051.00-223.00
RPS (Autocannon)154.0011.70-142.30
Latency avg (Autocannon)64.13 ms804.99 ms+740.86 ms

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

Metricplain-nuxt (baseline)i18n-microDifference
Max Memory324.30 MB343.73 MB+19.44 MB
Avg Memory218.66 MB274.70 MB+56.04 MB
Response Avg453.20 ms437.20 ms-16.00 ms
Response P952780.00 ms2780.00 ms0.00 ms
Response P993905.80 ms2836.20 ms-1069.60 ms
RPS (Artillery)274.00278.00+4.00
RPS (Autocannon)154.00150.70-3.30
Latency avg (Autocannon)64.13 ms65.70 ms+1.57 ms

Comparison: i18n v10 vs i18n-micro

Metrici18n v10i18n-microDifference
Max Memory1094.72 MB343.73 MB-750.98 MB
Avg Memory716.95 MB274.70 MB-442.25 MB
Response Avg1177.10 ms437.20 ms-739.90 ms
Response P955065.60 ms2780.00 ms-2285.60 ms
Response P998692.80 ms2836.20 ms-5856.60 ms
RPS (Artillery)51.00278.00+227.00
RPS (Autocannon)11.70150.70+139.00
Latency avg (Autocannon)804.99 ms65.70 ms-739.29 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.