Skip to content

fix: restore original performance comment layout - #1615

Merged
mrousavy merged 1 commit into
mainfrom
fix/restore-performance-comment
Sep 7, 2026
Merged

mrousavy merged 1 commit into
mainfrom
fix/restore-performance-comment

Conversation

@mrousavy

@mrousavy mrousavy commented Sep 7, 2026

Copy link
Copy Markdown
Member

Restores the performance comment presentation from #1583: the original Before / After / Difference HTML tables, alignment, bold faster timings, colored differences, and collapsed All Benchmarks. Each benchmark appears once; the repeated diagnostic tables and long statistical explanation are removed.

Keeps the current measurements, 5% display threshold, visible Promise changes, and exact raw JSON/app artifact links and attempts. Colors indicate observed direction. The only wording departures from the old format avoid claiming unchanged performance, decisive changes, or a future calibration plan.

Validated with all 84 performance-tool tests, the performance-tools typecheck, and scoped Prettier checks. Rendered old and restored comments from real run 34117178949 measurements through GitHub's Markdown API and inspected both collapsed and expanded views; the visible table HTML matches exactly.

The trusted publisher picks up this presentation after it reaches main.

Comment preview using six measurements from run 34117178949, attempt 2

These are existing measurements for the preview, not a benchmark of this PR.

Performance Report

⚠️ Advisory: Results do not fail this PR.

iOS

Benchmark Before After Difference
C++ simpleFunc() 70.2 ns 63.5 ns 🟢 -9.5% faster
Swift number property get/set 130.5 ns 142.4 ns 🔴 +9.18% slower
All Benchmarks
Benchmark Before After Difference
Swift immediatePromise() 1.15 µs 1.12 µs 🟢 -2.51% faster

Android

Benchmark Before After Difference
C++ simpleFunc() 82.9 ns 132.7 ns 🔴 +60.03% slower
Kotlin immediatePromise() 2.63 µs 2.44 µs 🟢 -7.34% faster
All Benchmarks
Benchmark Before After Difference
JavaScript addNumbers() 23.5 ns 23.5 ns 🟢 -0.37% faster

Benchmarking Code Diff 3303893f...16367b7b (view raw output)

Raw measurements: performance-report-2 (JSON artifact). Run 34117178949, attempt 2. Download requires GitHub access.

Android: measurements, attempt 2, apps, attempt 2.
iOS: measurements, attempt 2, apps, attempt 2.

@vercel

vercel Bot commented Sep 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
nitro-docs Ready Ready Preview Sep 7, 2026 12:36pm UTC

Request Review

@nitro-modules-bot

Copy link
Copy Markdown

Performance Report

Report only: Measurements do not fail this PR. Each benchmark has one base/head process pair. Samples describe within-process variation; they do not establish repeatability between launches or statistical confidence.

iOS

Benchmark Base p50 Head p50 Observed change
JavaScript addNumbers() 38.8 ns 51.5 ns +32.78% slower
C++ bounce(1 MiB) 501.1 ns 584.3 ns +16.61% slower
C++ bounce(4 KiB) 577.9 ns 508.4 ns -12.03% faster
C++ bounce native-owned buffer (1 MiB) 5.88 µs 6.24 µs +6.2% slower
C++ bounce native-owned buffer (4 KiB) 748.2 ns 705.6 ns -5.7% faster
C++ copy(1 MiB) 127.98 µs 94.54 µs -26.13% faster
C++ synchronousCallback() 335.0 ns 397.4 ns +18.62% slower
C++ create() 945.3 ns 677.7 ns -28.31% faster
C++ returnExisting() 316.6 ns 367.9 ns +16.21% slower
C++ optional trailing string 285.2 ns 310.1 ns +8.72% slower
C++ addNumbers() 163.2 ns 154.4 ns -5.39% faster
C++ deferred worker Promise (includes trigger call) 25.78 µs 30.15 µs +16.98% slower
C++ immediatePromise() 1.60 µs 1.68 µs +5.24% slower
C++ Unicode string 528.2 ns 587.3 ns +11.19% slower
C++ number string variant 217.2 ns 228.3 ns
Swift bounce(4 KiB) 433.1 ns 558.2 ns +28.89% slower
Swift bounce native-owned buffer (4 KiB) 1.03 µs 684.3 ns -33.58% faster
Swift copy(1 MiB) 128.20 µs 115.77 µs -9.69% faster
Swift copy(4 KiB) 2.55 µs 2.30 µs -9.85% faster
Swift large array (1,024) 83.25 µs 89.17 µs +7.11% slower
Swift synchronousCallback() 645.7 ns 564.7 ns -12.54% faster
Swift create() 40.06 µs 48.50 µs +21.08% slower
Swift optional trailing string 311.3 ns 261.3 ns -16.06% faster
Swift addNumbers() 152.1 ns 163.3 ns +7.36% slower
Swift simpleFunc() 142.5 ns 133.3 ns -6.5% faster
Swift deferred worker Promise (includes trigger call) 28.73 µs 33.28 µs +15.84% slower
Swift immediatePromise() 2.70 µs 2.94 µs +8.79% slower
Swift number property get/set 274.1 ns 298.2 ns +8.81% slower
Swift Unicode string 694.1 ns 733.2 ns +5.64% slower
Swift nested Car struct 4.14 µs 5.20 µs +25.49% slower
Swift number string variant 371.2 ns 331.2 ns
All benchmarks and sample variation
Benchmark Base p50 Head p50 Observed change
JavaScript addNumbers() 38.8 ns 51.5 ns +32.78% slower
C++ bounce(1 MiB) 501.1 ns 584.3 ns +16.61% slower
C++ bounce(4 KiB) 577.9 ns 508.4 ns -12.03% faster
C++ bounce native-owned buffer (1 MiB) 5.88 µs 6.24 µs +6.2% slower
C++ bounce native-owned buffer (4 KiB) 748.2 ns 705.6 ns -5.7% faster
C++ copy(1 MiB) 127.98 µs 94.54 µs -26.13% faster
C++ copy(4 KiB) 1.93 µs 1.85 µs -4.15% faster
C++ large array (1,024) 79.98 µs 81.61 µs +2.04% slower
C++ small array (16) 1.56 µs 1.56 µs +0.29% slower
C++ synchronousCallback() 335.0 ns 397.4 ns +18.62% slower
C++ create() 945.3 ns 677.7 ns -28.31% faster
C++ returnExisting() 316.6 ns 367.9 ns +16.21% slower
C++ typed map (8 entries) 3.12 µs 3.00 µs -4.12% faster
C++ optional trailing string 285.2 ns 310.1 ns +8.72% slower
C++ addNumbers() 163.2 ns 154.4 ns -5.39% faster
C++ simpleFunc() 158.5 ns 152.9 ns -3.51% faster
C++ deferred worker Promise (includes trigger call) 25.78 µs 30.15 µs +16.98% slower
C++ immediatePromise() 1.60 µs 1.68 µs +5.24% slower
C++ number property get/set 262.2 ns 265.1 ns +1.13% slower
C++ short ASCII string 271.8 ns 263.4 ns -3.08% faster
C++ Unicode string 528.2 ns 587.3 ns +11.19% slower
C++ nested Car struct 4.26 µs 4.24 µs -0.39% faster
C++ number string variant 217.2 ns 228.3 ns
Swift bounce(1 MiB) 643.5 ns 666.3 ns +3.54% slower
Swift bounce(4 KiB) 433.1 ns 558.2 ns +28.89% slower
Swift bounce native-owned buffer (1 MiB) 7.70 µs 7.38 µs -4.08% faster
Swift bounce native-owned buffer (4 KiB) 1.03 µs 684.3 ns -33.58% faster
Swift copy(1 MiB) 128.20 µs 115.77 µs -9.69% faster
Swift copy(4 KiB) 2.55 µs 2.30 µs -9.85% faster
Swift large array (1,024) 83.25 µs 89.17 µs +7.11% slower
Swift small array (16) 1.65 µs 1.66 µs +0.75% slower
Swift synchronousCallback() 645.7 ns 564.7 ns -12.54% faster
Swift create() 40.06 µs 48.50 µs +21.08% slower
Swift returnExisting() 469.4 ns 453.5 ns -3.38% faster
Swift typed map (8 entries) 5.63 µs 5.40 µs -4% faster
Swift optional trailing string 311.3 ns 261.3 ns -16.06% faster
Swift addNumbers() 152.1 ns 163.3 ns +7.36% slower
Swift simpleFunc() 142.5 ns 133.3 ns -6.5% faster
Swift deferred worker Promise (includes trigger call) 28.73 µs 33.28 µs +15.84% slower
Swift immediatePromise() 2.70 µs 2.94 µs +8.79% slower
Swift number property get/set 274.1 ns 298.2 ns +8.81% slower
Swift short ASCII string 294.0 ns 300.6 ns +2.24% slower
Swift Unicode string 694.1 ns 733.2 ns +5.64% slower
Swift nested Car struct 4.14 µs 5.20 µs +25.49% slower
Swift number string variant 371.2 ns 331.2 ns
TurboModule addNumbers() 1.89 µs 1.84 µs -2.82% faster
Benchmark Base process p50 Head process p50 Paired changes Sample MAD / p50 (base, head)
JavaScript addNumbers() 38.8 ns 51.5 ns +32.78% slower 6.5%, 17.0%
C++ bounce(1 MiB) 501.1 ns 584.3 ns +16.61% slower 8.3%, 8.5%
C++ bounce(4 KiB) 577.9 ns 508.4 ns -12.03% faster 7.6%, 12.7%
C++ bounce native-owned buffer (1 MiB) 5.88 µs 6.24 µs +6.2% slower 5.2%, 3.7%
C++ bounce native-owned buffer (4 KiB) 748.2 ns 705.6 ns -5.7% faster 4.0%, 3.9%
C++ copy(1 MiB) 127.98 µs 94.54 µs -26.13% faster 7.3%, 5.1%
C++ copy(4 KiB) 1.93 µs 1.85 µs -4.15% faster 8.3%, 9.3%
C++ large array (1,024) 79.98 µs 81.61 µs +2.04% slower 4.5%, 8.4%
C++ small array (16) 1.56 µs 1.56 µs +0.29% slower 5.5%, 4.1%
C++ synchronousCallback() 335.0 ns 397.4 ns +18.62% slower 9.3%, 9.0%
C++ create() 945.3 ns 677.7 ns -28.31% faster 13.3%, 7.7%
C++ returnExisting() 316.6 ns 367.9 ns +16.21% slower 4.6%, 5.0%
C++ typed map (8 entries) 3.12 µs 3.00 µs -4.12% faster 4.0%, 4.2%
C++ optional trailing string 285.2 ns 310.1 ns +8.72% slower 7.8%, 5.4%
C++ addNumbers() 163.2 ns 154.4 ns -5.39% faster 9.8%, 7.0%
C++ simpleFunc() 158.5 ns 152.9 ns -3.51% faster 9.0%, 5.3%
C++ deferred worker Promise (includes trigger call) 25.78 µs 30.15 µs +16.98% slower 7.2%, 8.8%
C++ immediatePromise() 1.60 µs 1.68 µs +5.24% slower 8.8%, 8.9%
C++ number property get/set 262.2 ns 265.1 ns +1.13% slower 8.2%, 7.3%
C++ short ASCII string 271.8 ns 263.4 ns -3.08% faster 4.5%, 5.4%
C++ Unicode string 528.2 ns 587.3 ns +11.19% slower 5.1%, 5.4%
C++ nested Car struct 4.26 µs 4.24 µs -0.39% faster 5.9%, 5.6%
C++ number string variant 217.2 ns 228.3 ns +5.13% slower
Swift bounce(1 MiB) 643.5 ns 666.3 ns +3.54% slower 7.7%, 9.8%
Swift bounce(4 KiB) 433.1 ns 558.2 ns +28.89% slower 3.5%, 5.9%
Swift bounce native-owned buffer (1 MiB) 7.70 µs 7.38 µs -4.08% faster 19.1%, 6.5%
Swift bounce native-owned buffer (4 KiB) 1.03 µs 684.3 ns -33.58% faster 4.4%, 6.4%
Swift copy(1 MiB) 128.20 µs 115.77 µs -9.69% faster 11.5%, 14.1%
Swift copy(4 KiB) 2.55 µs 2.30 µs -9.85% faster 10.6%, 10.8%
Swift large array (1,024) 83.25 µs 89.17 µs +7.11% slower 9.2%, 8.0%
Swift small array (16) 1.65 µs 1.66 µs +0.75% slower 5.5%, 4.0%
Swift synchronousCallback() 645.7 ns 564.7 ns -12.54% faster 11.5%, 13.7%
Swift create() 40.06 µs 48.50 µs +21.08% slower 3.3%, 9.0%
Swift returnExisting() 469.4 ns 453.5 ns -3.38% faster 6.7%, 4.2%
Swift typed map (8 entries) 5.63 µs 5.40 µs -4% faster 5.7%, 7.8%
Swift optional trailing string 311.3 ns 261.3 ns -16.06% faster 5.8%, 2.8%
Swift addNumbers() 152.1 ns 163.3 ns +7.36% slower 7.2%, 4.0%
Swift simpleFunc() 142.5 ns 133.3 ns -6.5% faster 3.6%, 6.1%
Swift deferred worker Promise (includes trigger call) 28.73 µs 33.28 µs +15.84% slower 9.3%, 11.6%
Swift immediatePromise() 2.70 µs 2.94 µs +8.79% slower 8.2%, 9.2%
Swift number property get/set 274.1 ns 298.2 ns +8.81% slower 6.3%, 4.4%
Swift short ASCII string 294.0 ns 300.6 ns +2.24% slower 5.3%, 7.8%
Swift Unicode string 694.1 ns 733.2 ns +5.64% slower 4.2%, 6.2%
Swift nested Car struct 4.14 µs 5.20 µs +25.49% slower 5.9%, 7.7%
Swift number string variant 371.2 ns 331.2 ns -10.79% faster
TurboModule addNumbers() 1.89 µs 1.84 µs -2.82% faster 5.1%, 8.0%

p50 is the median of timed batch averages in ns/op, not individual-call latency. MAD describes sample spread; ordered raw samples retain within-process drift.

Android

Benchmark Base p50 Head p50 Observed change
C++ copy(4 KiB) 1.30 µs 1.19 µs -8.81% faster
C++ large array (1,024) 46.46 µs 49.84 µs +7.27% slower
C++ small array (16) 1.12 µs 1.01 µs -10.08% faster
C++ addNumbers() 110.9 ns 104.7 ns -5.57% faster
C++ simpleFunc() 104.5 ns 91.2 ns -12.7% faster
C++ deferred worker Promise (includes trigger call) 36.68 µs 45.08 µs +22.9% slower
C++ short ASCII string 186.8 ns 173.4 ns -7.17% faster
Kotlin bounce native-owned buffer (4 KiB) 1.61 µs 1.77 µs +10.22% slower
Kotlin large array (1,024) 61.18 µs 55.70 µs -8.96% faster
Kotlin synchronousCallback() 1.52 µs 1.42 µs -6.75% faster
Kotlin number property get/set 312.1 ns 295.4 ns -5.33% faster
All benchmarks and sample variation
Benchmark Base p50 Head p50 Observed change
JavaScript addNumbers() 26.8 ns 26.7 ns -0.53% faster
C++ bounce(1 MiB) 590.2 ns 599.2 ns +1.53% slower
C++ bounce(4 KiB) 615.9 ns 593.6 ns -3.61% faster
C++ bounce native-owned buffer (1 MiB) 4.38 µs 4.43 µs +1.14% slower
C++ bounce native-owned buffer (4 KiB) 575.2 ns 599.6 ns +4.24% slower
C++ copy(1 MiB) 45.01 µs 43.78 µs -2.73% faster
C++ copy(4 KiB) 1.30 µs 1.19 µs -8.81% faster
C++ large array (1,024) 46.46 µs 49.84 µs +7.27% slower
C++ small array (16) 1.12 µs 1.01 µs -10.08% faster
C++ synchronousCallback() 440.7 ns 440.1 ns -0.12% faster
C++ create() 742.2 ns 737.9 ns -0.58% faster
C++ returnExisting() 273.2 ns 265.6 ns -2.8% faster
C++ typed map (8 entries) 2.20 µs 2.19 µs -0.05% faster
C++ optional trailing string 188.7 ns 187.9 ns -0.4% faster
C++ addNumbers() 110.9 ns 104.7 ns -5.57% faster
C++ simpleFunc() 104.5 ns 91.2 ns -12.7% faster
C++ deferred worker Promise (includes trigger call) 36.68 µs 45.08 µs +22.9% slower
C++ immediatePromise() 975.6 ns 991.1 ns +1.58% slower
C++ number property get/set 180.0 ns 181.2 ns +0.71% slower
C++ short ASCII string 186.8 ns 173.4 ns -7.17% faster
C++ Unicode string 343.8 ns 341.8 ns -0.59% faster
C++ nested Car struct 2.77 µs 2.76 µs -0.14% faster
C++ number string variant 168.9 ns 168.6 ns
Kotlin bounce(1 MiB) 1.55 µs 1.52 µs -2.47% faster
Kotlin bounce(4 KiB) 1.56 µs 1.52 µs -2.7% faster
Kotlin bounce native-owned buffer (1 MiB) 5.90 µs 5.68 µs -3.62% faster
Kotlin bounce native-owned buffer (4 KiB) 1.61 µs 1.77 µs +10.22% slower
Kotlin copy(1 MiB) 398.59 µs 403.05 µs +1.12% slower
Kotlin copy(4 KiB) 8.71 µs 8.39 µs -3.75% faster
Kotlin large array (1,024) 61.18 µs 55.70 µs -8.96% faster
Kotlin small array (16) 1.42 µs 1.41 µs -0.4% faster
Kotlin synchronousCallback() 1.52 µs 1.42 µs -6.75% faster
Kotlin create() 2.24 µs 2.22 µs -0.67% faster
Kotlin returnExisting() 760.7 ns 754.2 ns -0.85% faster
Kotlin typed map (8 entries) 9.66 µs 9.74 µs +0.81% slower
Kotlin optional trailing string 408.1 ns 402.2 ns -1.45% faster
Kotlin addNumbers() 150.5 ns 147.6 ns -1.94% faster
Kotlin simpleFunc() 125.8 ns 131.5 ns +4.46% slower
Kotlin deferred worker Promise (includes trigger call) 58.72 µs 58.63 µs -0.15% faster
Kotlin immediatePromise() 3.01 µs 2.94 µs -2.07% faster
Kotlin number property get/set 312.1 ns 295.4 ns -5.33% faster
Kotlin short ASCII string 581.6 ns 571.6 ns -1.72% faster
Kotlin Unicode string 947.3 ns 948.9 ns +0.17% slower
Kotlin nested Car struct 6.69 µs 6.78 µs +1.4% slower
Kotlin number string variant 512.5 ns 512.8 ns
TurboModule addNumbers() 302.7 ns 300.3 ns -0.82% faster
Benchmark Base process p50 Head process p50 Paired changes Sample MAD / p50 (base, head)
JavaScript addNumbers() 26.8 ns 26.7 ns -0.53% faster 0.8%, 0.4%
C++ bounce(1 MiB) 590.2 ns 599.2 ns +1.53% slower 13.9%, 12.0%
C++ bounce(4 KiB) 615.9 ns 593.6 ns -3.61% faster 15.4%, 14.8%
C++ bounce native-owned buffer (1 MiB) 4.38 µs 4.43 µs +1.14% slower 0.9%, 1.0%
C++ bounce native-owned buffer (4 KiB) 575.2 ns 599.6 ns +4.24% slower 0.3%, 3.1%
C++ copy(1 MiB) 45.01 µs 43.78 µs -2.73% faster 2.1%, 0.9%
C++ copy(4 KiB) 1.30 µs 1.19 µs -8.81% faster 1.6%, 1.3%
C++ large array (1,024) 46.46 µs 49.84 µs +7.27% slower 0.5%, 1.5%
C++ small array (16) 1.12 µs 1.01 µs -10.08% faster 1.9%, 0.7%
C++ synchronousCallback() 440.7 ns 440.1 ns -0.12% faster 8.1%, 6.0%
C++ create() 742.2 ns 737.9 ns -0.58% faster 3.5%, 3.0%
C++ returnExisting() 273.2 ns 265.6 ns -2.8% faster 3.4%, 1.0%
C++ typed map (8 entries) 2.20 µs 2.19 µs -0.05% faster 0.7%, 0.3%
C++ optional trailing string 188.7 ns 187.9 ns -0.4% faster 1.5%, 0.7%
C++ addNumbers() 110.9 ns 104.7 ns -5.57% faster 5.6%, 0.5%
C++ simpleFunc() 104.5 ns 91.2 ns -12.7% faster 3.1%, 0.8%
C++ deferred worker Promise (includes trigger call) 36.68 µs 45.08 µs +22.9% slower 1.8%, 14.1%
C++ immediatePromise() 975.6 ns 991.1 ns +1.58% slower 1.0%, 2.0%
C++ number property get/set 180.0 ns 181.2 ns +0.71% slower 0.7%, 0.7%
C++ short ASCII string 186.8 ns 173.4 ns -7.17% faster 2.8%, 3.3%
C++ Unicode string 343.8 ns 341.8 ns -0.59% faster 1.5%, 0.3%
C++ nested Car struct 2.77 µs 2.76 µs -0.14% faster 0.7%, 1.5%
C++ number string variant 168.9 ns 168.6 ns -0.19% faster
Kotlin bounce(1 MiB) 1.55 µs 1.52 µs -2.47% faster 6.3%, 4.6%
Kotlin bounce(4 KiB) 1.56 µs 1.52 µs -2.7% faster 5.9%, 6.3%
Kotlin bounce native-owned buffer (1 MiB) 5.90 µs 5.68 µs -3.62% faster 0.8%, 1.3%
Kotlin bounce native-owned buffer (4 KiB) 1.61 µs 1.77 µs +10.22% slower 1.7%, 4.5%
Kotlin copy(1 MiB) 398.59 µs 403.05 µs +1.12% slower 2.7%, 2.4%
Kotlin copy(4 KiB) 8.71 µs 8.39 µs -3.75% faster 4.6%, 2.9%
Kotlin large array (1,024) 61.18 µs 55.70 µs -8.96% faster 1.9%, 1.7%
Kotlin small array (16) 1.42 µs 1.41 µs -0.4% faster 1.6%, 1.0%
Kotlin synchronousCallback() 1.52 µs 1.42 µs -6.75% faster 4.3%, 2.6%
Kotlin create() 2.24 µs 2.22 µs -0.67% faster 2.1%, 2.9%
Kotlin returnExisting() 760.7 ns 754.2 ns -0.85% faster 1.9%, 0.8%
Kotlin typed map (8 entries) 9.66 µs 9.74 µs +0.81% slower 1.0%, 1.3%
Kotlin optional trailing string 408.1 ns 402.2 ns -1.45% faster 1.9%, 0.8%
Kotlin addNumbers() 150.5 ns 147.6 ns -1.94% faster 0.9%, 0.6%
Kotlin simpleFunc() 125.8 ns 131.5 ns +4.46% slower 0.7%, 0.5%
Kotlin deferred worker Promise (includes trigger call) 58.72 µs 58.63 µs -0.15% faster 2.6%, 2.5%
Kotlin immediatePromise() 3.01 µs 2.94 µs -2.07% faster 2.9%, 1.3%
Kotlin number property get/set 312.1 ns 295.4 ns -5.33% faster 0.9%, 0.4%
Kotlin short ASCII string 581.6 ns 571.6 ns -1.72% faster 1.1%, 1.2%
Kotlin Unicode string 947.3 ns 948.9 ns +0.17% slower 1.8%, 2.3%
Kotlin nested Car struct 6.69 µs 6.78 µs +1.4% slower 1.1%, 1.0%
Kotlin number string variant 512.5 ns 512.8 ns +0.06% slower
TurboModule addNumbers() 302.7 ns 300.3 ns -0.82% faster 1.8%, 1.0%

p50 is the median of timed batch averages in ns/op, not individual-call latency. MAD describes sample spread; ordered raw samples retain within-process drift.

Benchmarking Code Diff 3303893f...a81cec41 (view CI run)

Raw measurements: performance-report-1 (JSON artifact). Run 34122713124, attempt 1. Download requires GitHub access.

Android: measurements, attempt 1, apps, attempt 1.
iOS: measurements, attempt 1, apps, attempt 1.

@mrousavy
mrousavy merged commit 7aea9a0 into main Sep 7, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant