Skip to content

crosscompile: validate archive paths and nested ZIP entries - #3053

Open
cpunion wants to merge 3 commits into
xgo-dev:mainfrom
cpunion:fix/review-2942-zip-paths-20261111
Open

cpunion wants to merge 3 commits into
xgo-dev:mainfrom
cpunion:fix/review-2942-zip-paths-20261111

Conversation

@cpunion

@cpunion cpunion commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

Reject nonlocal TAR/ZIP member names such as ../outside.txt and absolute paths using filepath.IsLocal. Create parent directories for ZIP files with missing or unordered directory records, and close readers returned alongside zip.ErrInsecurePath.

Follow up the extraction finding in the review of #2942. Tests cover traversal, relative destinations, Windows path forms and unordered entries. The ZIP traversal regression fails on the previous implementation. The complete internal/crosscompile suite passes.

@fennoai fennoai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: reject escaping ZIP member paths

The core change is correct and well-targeted. Gating extraction on filepath.IsLocal(file.Name) is the right primitive for closing the zip-slip hole — Go guarantees that when IsLocal(p) is true, filepath.Join(base, p) stays inside base, so .. traversal, absolute paths, Windows drive-relative/UNC paths, and reserved names are all rejected. Closing the reader returned alongside zip.ErrInsecurePath is a genuine fd-leak fix. Test coverage is strong: it exercises both the custom guard (GODEBUG=zipinsecurepath=1) and the stdlib rejection path (=0), covers Windows-specific vectors behind a runtime.GOOS gate, and asserts the security property (outside file unchanged, outside dir not created) rather than just the error string.

A few non-blocking observations below.

Notes (non-blocking)

  • Traversal-guard idiom now diverges from extractTarGz. After this PR, extractZip uses filepath.IsLocal, while the sibling extractTarGz (internal/crosscompile/fetch.go:337) still uses the older strings.HasPrefix(target, filepath.Clean(dest)+os.PathSeparator) pattern with a different error message (illegal file path). Not a regression, but converging both extractors on the filepath.IsLocal idiom in a follow-up would remove two parallel hardening patterns from the same file.

Nothing here blocks merge; the inline items are a latent robustness gap and a minor wording nit.

Comment thread internal/crosscompile/fetch.go Resolved
Comment thread internal/crosscompile/fetch.go Resolved
@codecov

codecov Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 88.88889% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
internal/crosscompile/fetch.go 88.88% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@cpunion cpunion changed the title crosscompile: reject escaping ZIP member paths crosscompile: validate archive paths and nested ZIP entries Nov 10, 2026

@visualfc visualfc left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The filepath.IsLocal gate is the right primitive: Go 1.27 still accepts non-local ZIP/TAR names by default, and Join(dest, name) stays inside dest once IsLocal is true. Closing the reader returned with zip.ErrInsecurePath is required on Windows. Creating parent directories covers missing and unordered ZIP directory records.

Tests check the security property (files outside dest are unchanged) for traversal, absolute names, relative destinations, and Windows path forms. CI is green.

A few non-blocking nits below. The .tar.xz path still goes through system tar -xf / 7-Zip; that is outside this PR, but downloadAndExtractArchive uses it for toolchains too.

Comment thread internal/crosscompile/fetch.go Resolved
Comment thread internal/crosscompile/fetch_test.go Resolved
@github-actions

Copy link
Copy Markdown

LLGo baseline benchmarks

7e57a3d5e0cd | workflow run | long-term charts

String equality benchmarks
Platform Benchmark ns/op vs base
Linux BenchmarkStringEquality/bytes/equal/1024/Go 25.760 ns/op -0.08 ns/op / -0.3% (better)
Linux BenchmarkStringEquality/bytes/equal/1024/LLGo 69.410 ns/op +6.57 ns/op / +10.5% (worse)
Linux BenchmarkStringEquality/bytes/equal/128/Go 8.918 ns/op +0.498 ns/op / +5.9% (worse)
Linux BenchmarkStringEquality/bytes/equal/128/LLGo 11.990 ns/op -0.01 ns/op / -0.1% (better)
Linux BenchmarkStringEquality/bytes/equal/8/Go 5.829 ns/op -0.008 ns/op / -0.1% (better)
Linux BenchmarkStringEquality/bytes/equal/8/LLGo 4.381 ns/op +0.477 ns/op / +12.2% (worse)
Linux BenchmarkStringEquality/bytes/first/1024/Go 6.612 ns/op -0.029 ns/op / -0.4% (better)
Linux BenchmarkStringEquality/bytes/first/1024/LLGo 2.437 ns/op +0.099 ns/op / +4.2% (worse)
Linux BenchmarkStringEquality/bytes/first/128/Go 6.614 ns/op -0.028 ns/op / -0.4% (better)
Linux BenchmarkStringEquality/bytes/first/128/LLGo 2.335 ns/op -0.007 ns/op / -0.3% (better)
Linux BenchmarkStringEquality/bytes/first/8/Go 5.823 ns/op -0.018 ns/op / -0.3% (better)
Linux BenchmarkStringEquality/bytes/first/8/LLGo 2.474 ns/op +0.074 ns/op / +3.1% (worse)
Linux BenchmarkStringEquality/bytes/last/1024/Go 25.140 ns/op -0.36 ns/op / -1.4% (better)
Linux BenchmarkStringEquality/bytes/last/1024/LLGo 71.070 ns/op +8.29 ns/op / +13.2% (worse)
Linux BenchmarkStringEquality/bytes/last/128/Go 8.145 ns/op -0.009 ns/op / -0.1% (better)
Linux BenchmarkStringEquality/bytes/last/128/LLGo 11.840 ns/op 0 ns/op / +0.0%
Linux BenchmarkStringEquality/bytes/last/8/Go 5.821 ns/op -0.021 ns/op / -0.4% (better)
Linux BenchmarkStringEquality/bytes/last/8/LLGo 3.121 ns/op +0.004 ns/op / +0.1% (worse)
Linux BenchmarkStringEquality/strings/equal/1024/Go 23.140 ns/op -0.12 ns/op / -0.5% (better)
Linux BenchmarkStringEquality/strings/equal/1024/LLGo 54.880 ns/op +0.17 ns/op / +0.3% (worse)
Linux BenchmarkStringEquality/strings/equal/128/Go 8.922 ns/op +0.649 ns/op / +7.8% (worse)
Linux BenchmarkStringEquality/strings/equal/128/LLGo 11.220 ns/op +0.01 ns/op / +0.1% (worse)
Linux BenchmarkStringEquality/strings/equal/8/Go 5.836 ns/op +0.006 ns/op / +0.1% (worse)
Linux BenchmarkStringEquality/strings/equal/8/LLGo 4.334 ns/op -0.507 ns/op / -10.5% (better)
Linux BenchmarkStringEquality/strings/first/1024/Go 6.598 ns/op -0.031 ns/op / -0.5% (better)
Linux BenchmarkStringEquality/strings/first/1024/LLGo 2.731 ns/op +0.008 ns/op / +0.3% (worse)
Linux BenchmarkStringEquality/strings/first/128/Go 6.594 ns/op -0.019 ns/op / -0.3% (better)
Linux BenchmarkStringEquality/strings/first/128/LLGo 2.727 ns/op -0.007 ns/op / -0.3% (better)
Linux BenchmarkStringEquality/strings/first/8/Go 5.815 ns/op -0.017 ns/op / -0.3% (better)
Linux BenchmarkStringEquality/strings/first/8/LLGo 2.756 ns/op -0.36 ns/op / -11.6% (better)
Linux BenchmarkStringEquality/strings/last/1024/Go 22.620 ns/op -5.9 ns/op / -20.7% (better)
Linux BenchmarkStringEquality/strings/last/1024/LLGo 55.360 ns/op +0.52 ns/op / +0.9% (worse)
Linux BenchmarkStringEquality/strings/last/128/Go 8.147 ns/op -0.002 ns/op / -0.02454% (better)
Linux BenchmarkStringEquality/strings/last/128/LLGo 11.130 ns/op +0.04 ns/op / +0.4% (worse)
Linux BenchmarkStringEquality/strings/last/8/Go 5.822 ns/op -0.005 ns/op / -0.1% (better)
Linux BenchmarkStringEquality/strings/last/8/LLGo 3.620 ns/op +0.114 ns/op / +3.3% (worse)
macOS BenchmarkStringEquality/bytes/equal/1024/Go 43.190 ns/op +14.13 ns/op / +48.6% (worse)
macOS BenchmarkStringEquality/bytes/equal/1024/LLGo 23.450 ns/op -8.53 ns/op / -26.7% (better)
macOS BenchmarkStringEquality/bytes/equal/128/Go 7.538 ns/op +0.772 ns/op / +11.4% (worse)
macOS BenchmarkStringEquality/bytes/equal/128/LLGo 4.480 ns/op -5.59 ns/op / -55.5% (better)
macOS BenchmarkStringEquality/bytes/equal/8/Go 4.594 ns/op +1.015 ns/op / +28.4% (worse)
macOS BenchmarkStringEquality/bytes/equal/8/LLGo 3.248 ns/op -0.903 ns/op / -21.8% (better)
macOS BenchmarkStringEquality/bytes/first/1024/Go 4.634 ns/op +0.803 ns/op / +21.0% (worse)
macOS BenchmarkStringEquality/bytes/first/1024/LLGo 1.765 ns/op -0.14 ns/op / -7.3% (better)
macOS BenchmarkStringEquality/bytes/first/128/Go 9.229 ns/op +3.831 ns/op / +71.0% (worse)
macOS BenchmarkStringEquality/bytes/first/128/LLGo 1.721 ns/op -0.599 ns/op / -25.8% (better)
macOS BenchmarkStringEquality/bytes/first/8/Go 4.094 ns/op +0.57 ns/op / +16.2% (worse)
macOS BenchmarkStringEquality/bytes/first/8/LLGo 1.731 ns/op -0.435 ns/op / -20.1% (better)
macOS BenchmarkStringEquality/bytes/last/1024/Go 38.510 ns/op +12.1 ns/op / +45.8% (worse)
macOS BenchmarkStringEquality/bytes/last/1024/LLGo 23.570 ns/op -3.46 ns/op / -12.8% (better)
macOS BenchmarkStringEquality/bytes/last/128/Go 5.943 ns/op -1.302 ns/op / -18.0% (better)
macOS BenchmarkStringEquality/bytes/last/128/LLGo 3.894 ns/op -2.907 ns/op / -42.7% (better)
macOS BenchmarkStringEquality/bytes/last/8/Go 4.700 ns/op +0.887 ns/op / +23.3% (worse)
macOS BenchmarkStringEquality/bytes/last/8/LLGo 2.439 ns/op -2.858 ns/op / -54.0% (better)
macOS BenchmarkStringEquality/strings/equal/1024/Go 37.360 ns/op +1.05 ns/op / +2.9% (worse)
macOS BenchmarkStringEquality/strings/equal/1024/LLGo 23.340 ns/op -8.08 ns/op / -25.7% (better)
macOS BenchmarkStringEquality/strings/equal/128/Go 8.965 ns/op +2.243 ns/op / +33.4% (worse)
macOS BenchmarkStringEquality/strings/equal/128/LLGo 4.559 ns/op -2.558 ns/op / -35.9% (better)
macOS BenchmarkStringEquality/strings/equal/8/Go 5.146 ns/op +1.561 ns/op / +43.5% (worse)
macOS BenchmarkStringEquality/strings/equal/8/LLGo 3.182 ns/op -0.155 ns/op / -4.6% (better)
macOS BenchmarkStringEquality/strings/first/1024/Go 6.552 ns/op +2.563 ns/op / +64.3% (worse)
macOS BenchmarkStringEquality/strings/first/1024/LLGo 1.733 ns/op -0.335 ns/op / -16.2% (better)
macOS BenchmarkStringEquality/strings/first/128/Go 7.618 ns/op +2.912 ns/op / +61.9% (worse)
macOS BenchmarkStringEquality/strings/first/128/LLGo 1.719 ns/op -0.486 ns/op / -22.0% (better)
macOS BenchmarkStringEquality/strings/first/8/Go 4.024 ns/op +0.317 ns/op / +8.6% (worse)
macOS BenchmarkStringEquality/strings/first/8/LLGo 2.032 ns/op +0.072 ns/op / +3.7% (worse)
macOS BenchmarkStringEquality/strings/last/1024/Go 39.410 ns/op +11.7 ns/op / +42.2% (worse)
macOS BenchmarkStringEquality/strings/last/1024/LLGo 23.360 ns/op -3.28 ns/op / -12.3% (better)
macOS BenchmarkStringEquality/strings/last/128/Go 7.161 ns/op +0.9 ns/op / +14.4% (worse)
macOS BenchmarkStringEquality/strings/last/128/LLGo 3.797 ns/op -0.94 ns/op / -19.8% (better)
macOS BenchmarkStringEquality/strings/last/8/Go 6.759 ns/op +3.197 ns/op / +89.8% (worse)
macOS BenchmarkStringEquality/strings/last/8/LLGo 2.427 ns/op -1.036 ns/op / -29.9% (better)
Windows MinGW BenchmarkStringEquality/bytes/equal/1024/Go 16.800 ns/op -0.09 ns/op / -0.5% (better)
Windows MinGW BenchmarkStringEquality/bytes/equal/1024/LLGo 34.860 ns/op -0.41 ns/op / -1.2% (better)
Windows MinGW BenchmarkStringEquality/bytes/equal/128/Go 6.291 ns/op -0.095 ns/op / -1.5% (better)
Windows MinGW BenchmarkStringEquality/bytes/equal/128/LLGo 9.416 ns/op -0.038 ns/op / -0.4% (better)
Windows MinGW BenchmarkStringEquality/bytes/equal/8/Go 5.682 ns/op -0.027 ns/op / -0.5% (better)
Windows MinGW BenchmarkStringEquality/bytes/equal/8/LLGo 3.793 ns/op +0.002 ns/op / +0.1% (worse)
Windows MinGW BenchmarkStringEquality/bytes/first/1024/Go 5.713 ns/op -0.027 ns/op / -0.5% (better)
Windows MinGW BenchmarkStringEquality/bytes/first/1024/LLGo 2.723 ns/op +0.015 ns/op / +0.6% (worse)
Windows MinGW BenchmarkStringEquality/bytes/first/128/Go 4.890 ns/op -0.002 ns/op / -0.04088% (better)
Windows MinGW BenchmarkStringEquality/bytes/first/128/LLGo 2.707 ns/op -0.003 ns/op / -0.1% (better)
Windows MinGW BenchmarkStringEquality/bytes/first/8/Go 4.888 ns/op -0.821 ns/op / -14.4% (better)
Windows MinGW BenchmarkStringEquality/bytes/first/8/LLGo 2.710 ns/op -0.002 ns/op / -0.1% (better)
Windows MinGW BenchmarkStringEquality/bytes/last/1024/Go 16.330 ns/op -0.1 ns/op / -0.6% (better)
Windows MinGW BenchmarkStringEquality/bytes/last/1024/LLGo 34.340 ns/op -0.12 ns/op / -0.3% (better)
Windows MinGW BenchmarkStringEquality/bytes/last/128/Go 5.494 ns/op +0.507 ns/op / +10.2% (worse)
Windows MinGW BenchmarkStringEquality/bytes/last/128/LLGo 8.643 ns/op +0.25 ns/op / +3.0% (worse)
Windows MinGW BenchmarkStringEquality/bytes/last/8/Go 4.708 ns/op -0.025 ns/op / -0.5% (better)
Windows MinGW BenchmarkStringEquality/bytes/last/8/LLGo 3.249 ns/op -0.002 ns/op / -0.1% (better)
Windows MinGW BenchmarkStringEquality/strings/equal/1024/Go 16.060 ns/op +0.82 ns/op / +5.4% (worse)
Windows MinGW BenchmarkStringEquality/strings/equal/1024/LLGo 30.050 ns/op +0.22 ns/op / +0.7% (worse)
Windows MinGW BenchmarkStringEquality/strings/equal/128/Go 5.685 ns/op -0.477 ns/op / -7.7% (better)
Windows MinGW BenchmarkStringEquality/strings/equal/128/LLGo 6.032 ns/op +0.005 ns/op / +0.1% (worse)
Windows MinGW BenchmarkStringEquality/strings/equal/8/Go 5.348 ns/op +0.394 ns/op / +8.0% (worse)
Windows MinGW BenchmarkStringEquality/strings/equal/8/LLGo 2.710 ns/op +0.003 ns/op / +0.1% (worse)
Windows MinGW BenchmarkStringEquality/strings/first/1024/Go 5.019 ns/op +0.059 ns/op / +1.2% (worse)
Windows MinGW BenchmarkStringEquality/strings/first/1024/LLGo 1.895 ns/op 0 ns/op / +0.0%
Windows MinGW BenchmarkStringEquality/strings/first/128/Go 4.663 ns/op -1.044 ns/op / -18.3% (better)
Windows MinGW BenchmarkStringEquality/strings/first/128/LLGo 1.895 ns/op 0 ns/op / +0.0%
Windows MinGW BenchmarkStringEquality/strings/first/8/Go 5.722 ns/op +0.791 ns/op / +16.0% (worse)
Windows MinGW BenchmarkStringEquality/strings/first/8/LLGo 1.989 ns/op +0.094 ns/op / +5.0% (worse)
Windows MinGW BenchmarkStringEquality/strings/last/1024/Go 14.640 ns/op +0.06 ns/op / +0.4% (worse)
Windows MinGW BenchmarkStringEquality/strings/last/1024/LLGo 29.960 ns/op 0 ns/op / +0.0%
Windows MinGW BenchmarkStringEquality/strings/last/128/Go 4.945 ns/op -1.095 ns/op / -18.1% (better)
Windows MinGW BenchmarkStringEquality/strings/last/128/LLGo 6.188 ns/op -0.718 ns/op / -10.4% (better)
Windows MinGW BenchmarkStringEquality/strings/last/8/Go 5.219 ns/op +0.303 ns/op / +6.2% (worse)
Windows MinGW BenchmarkStringEquality/strings/last/8/LLGo 2.166 ns/op -0.002 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/equal/1024/Go 31.010 ns/op +0.22 ns/op / +0.7% (worse)
Windows MinGW 386 BenchmarkStringEquality/bytes/equal/1024/LLGo 33.460 ns/op -0.01 ns/op / -0.02988% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/equal/128/Go 10.140 ns/op -0.03 ns/op / -0.3% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/equal/128/LLGo 8.205 ns/op +0.181 ns/op / +2.3% (worse)
Windows MinGW 386 BenchmarkStringEquality/bytes/equal/8/Go 7.334 ns/op -0.162 ns/op / -2.2% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/equal/8/LLGo 4.890 ns/op +0.237 ns/op / +5.1% (worse)
Windows MinGW 386 BenchmarkStringEquality/bytes/first/1024/Go 8.101 ns/op +0.074 ns/op / +0.9% (worse)
Windows MinGW 386 BenchmarkStringEquality/bytes/first/1024/LLGo 3.665 ns/op -0.038 ns/op / -1.0% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/first/128/Go 8.114 ns/op -0.009 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/first/128/LLGo 3.681 ns/op -0.084 ns/op / -2.2% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/first/8/Go 6.944 ns/op -0.067 ns/op / -1.0% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/first/8/LLGo 3.915 ns/op +0.222 ns/op / +6.0% (worse)
Windows MinGW 386 BenchmarkStringEquality/bytes/last/1024/Go 30.150 ns/op -0.34 ns/op / -1.1% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/last/1024/LLGo 32.840 ns/op 0 ns/op / +0.0%
Windows MinGW 386 BenchmarkStringEquality/bytes/last/128/Go 9.604 ns/op +0.131 ns/op / +1.4% (worse)
Windows MinGW 386 BenchmarkStringEquality/bytes/last/128/LLGo 7.129 ns/op -0.027 ns/op / -0.4% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/last/8/Go 7.493 ns/op -0.005 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkStringEquality/bytes/last/8/LLGo 4.264 ns/op -0.055 ns/op / -1.3% (better)
Windows MinGW 386 BenchmarkStringEquality/strings/equal/1024/Go 28.880 ns/op +0.48 ns/op / +1.7% (worse)
Windows MinGW 386 BenchmarkStringEquality/strings/equal/1024/LLGo 33.900 ns/op +0.03 ns/op / +0.1% (worse)
Windows MinGW 386 BenchmarkStringEquality/strings/equal/128/Go 9.567 ns/op -0.016 ns/op / -0.2% (better)
Windows MinGW 386 BenchmarkStringEquality/strings/equal/128/LLGo 8.262 ns/op +0.156 ns/op / +1.9% (worse)
Windows MinGW 386 BenchmarkStringEquality/strings/equal/8/Go 7.160 ns/op -0.49 ns/op / -6.4% (better)
Windows MinGW 386 BenchmarkStringEquality/strings/equal/8/LLGo 5.128 ns/op +0.102 ns/op / +2.0% (worse)
Windows MinGW 386 BenchmarkStringEquality/strings/first/1024/Go 7.764 ns/op -0.085 ns/op / -1.1% (better)
Windows MinGW 386 BenchmarkStringEquality/strings/first/1024/LLGo 3.775 ns/op +0.038 ns/op / +1.0% (worse)
Windows MinGW 386 BenchmarkStringEquality/strings/first/128/Go 7.806 ns/op -0.231 ns/op / -2.9% (better)
Windows MinGW 386 BenchmarkStringEquality/strings/first/128/LLGo 3.767 ns/op -0.026 ns/op / -0.7% (better)
Windows MinGW 386 BenchmarkStringEquality/strings/first/8/Go 6.869 ns/op +0.067 ns/op / +1.0% (worse)
Windows MinGW 386 BenchmarkStringEquality/strings/first/8/LLGo 4.019 ns/op +0.19 ns/op / +5.0% (worse)
Windows MinGW 386 BenchmarkStringEquality/strings/last/1024/Go 28.220 ns/op -0.2 ns/op / -0.7% (better)
Windows MinGW 386 BenchmarkStringEquality/strings/last/1024/LLGo 32.840 ns/op 0 ns/op / +0.0%
Windows MinGW 386 BenchmarkStringEquality/strings/last/128/Go 9.039 ns/op -0.042 ns/op / -0.5% (better)
Windows MinGW 386 BenchmarkStringEquality/strings/last/128/LLGo 7.209 ns/op -0.043 ns/op / -0.6% (better)
Windows MinGW 386 BenchmarkStringEquality/strings/last/8/Go 7.097 ns/op -0.156 ns/op / -2.2% (better)
Windows MinGW 386 BenchmarkStringEquality/strings/last/8/LLGo 4.247 ns/op -0.002 ns/op / -0.04707% (better)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/equal/1024/Go 31.470 ns/op +0.18 ns/op / +0.6% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/equal/1024/LLGo 38.900 ns/op -0.48 ns/op / -1.2% (better)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/equal/128/Go 6.803 ns/op +0.078 ns/op / +1.2% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/equal/128/LLGo 7.144 ns/op +0.008 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/equal/8/Go 3.720 ns/op -0.02 ns/op / -0.5% (better)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/equal/8/LLGo 2.608 ns/op +0.052 ns/op / +2.0% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/first/1024/Go 4.737 ns/op +0.002 ns/op / +0.04224% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/first/1024/LLGo 1.595 ns/op +0.012 ns/op / +0.8% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/first/128/Go 4.831 ns/op -0.026 ns/op / -0.5% (better)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/first/128/LLGo 1.587 ns/op +0.02 ns/op / +1.3% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/first/8/Go 3.410 ns/op -0.054 ns/op / -1.6% (better)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/first/8/LLGo 1.568 ns/op +0.008 ns/op / +0.5% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/last/1024/Go 31.430 ns/op +0.19 ns/op / +0.6% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/last/1024/LLGo 39.170 ns/op +0.11 ns/op / +0.3% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/last/128/Go 6.658 ns/op -0.038 ns/op / -0.6% (better)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/last/128/LLGo 6.809 ns/op +0.016 ns/op / +0.2% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/last/8/Go 3.400 ns/op +0.005 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/bytes/last/8/LLGo 2.098 ns/op -0.016 ns/op / -0.8% (better)
Windows MinGW ARM64 BenchmarkStringEquality/strings/equal/1024/Go 27.460 ns/op -0.2 ns/op / -0.7% (better)
Windows MinGW ARM64 BenchmarkStringEquality/strings/equal/1024/LLGo 35.800 ns/op +0.03 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/strings/equal/128/Go 6.078 ns/op -0.025 ns/op / -0.4% (better)
Windows MinGW ARM64 BenchmarkStringEquality/strings/equal/128/LLGo 5.866 ns/op +0.011 ns/op / +0.2% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/strings/equal/8/Go 3.979 ns/op +0.005 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/strings/equal/8/LLGo 2.347 ns/op -0.001 ns/op / -0.04259% (better)
Windows MinGW ARM64 BenchmarkStringEquality/strings/first/1024/Go 4.502 ns/op -0.164 ns/op / -3.5% (better)
Windows MinGW ARM64 BenchmarkStringEquality/strings/first/1024/LLGo 1.586 ns/op -0.009 ns/op / -0.6% (better)
Windows MinGW ARM64 BenchmarkStringEquality/strings/first/128/Go 4.528 ns/op +0.017 ns/op / +0.4% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/strings/first/128/LLGo 1.592 ns/op +0.001 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/strings/first/8/Go 3.889 ns/op 0 ns/op / +0.0%
Windows MinGW ARM64 BenchmarkStringEquality/strings/first/8/LLGo 1.598 ns/op +0.016 ns/op / +1.0% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/strings/last/1024/Go 27.120 ns/op +0.05 ns/op / +0.2% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/strings/last/1024/LLGo 35.380 ns/op +0.03 ns/op / +0.1% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/strings/last/128/Go 5.920 ns/op +0.011 ns/op / +0.2% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/strings/last/128/LLGo 5.468 ns/op +0.034 ns/op / +0.6% (worse)
Windows MinGW ARM64 BenchmarkStringEquality/strings/last/8/Go 3.881 ns/op -0.01 ns/op / -0.3% (better)
Windows MinGW ARM64 BenchmarkStringEquality/strings/last/8/LLGo 2.117 ns/op -0.021 ns/op / -1.0% (better)
Windows MSVC BenchmarkStringEquality/bytes/equal/1024/Go 16.840 ns/op -0.53 ns/op / -3.1% (better)
Windows MSVC BenchmarkStringEquality/bytes/equal/1024/LLGo 33.500 ns/op -0.28 ns/op / -0.8% (better)
Windows MSVC BenchmarkStringEquality/bytes/equal/128/Go 6.307 ns/op +0.072 ns/op / +1.2% (worse)
Windows MSVC BenchmarkStringEquality/bytes/equal/128/LLGo 8.214 ns/op -0.092 ns/op / -1.1% (better)
Windows MSVC BenchmarkStringEquality/bytes/equal/8/Go 5.776 ns/op -0.028 ns/op / -0.5% (better)
Windows MSVC BenchmarkStringEquality/bytes/equal/8/LLGo 4.089 ns/op +0.006 ns/op / +0.1% (worse)
Windows MSVC BenchmarkStringEquality/bytes/first/1024/Go 5.723 ns/op +0.015 ns/op / +0.3% (worse)
Windows MSVC BenchmarkStringEquality/bytes/first/1024/LLGo 3.555 ns/op -0.025 ns/op / -0.7% (better)
Windows MSVC BenchmarkStringEquality/bytes/first/128/Go 6.028 ns/op +1.295 ns/op / +27.4% (worse)
Windows MSVC BenchmarkStringEquality/bytes/first/128/LLGo 3.537 ns/op +0.013 ns/op / +0.4% (worse)
Windows MSVC BenchmarkStringEquality/bytes/first/8/Go 5.706 ns/op +0.703 ns/op / +14.1% (worse)
Windows MSVC BenchmarkStringEquality/bytes/first/8/LLGo 3.540 ns/op -0.25 ns/op / -6.6% (better)
Windows MSVC BenchmarkStringEquality/bytes/last/1024/Go 16.360 ns/op -0.14 ns/op / -0.8% (better)
Windows MSVC BenchmarkStringEquality/bytes/last/1024/LLGo 34.780 ns/op +0.22 ns/op / +0.6% (worse)
Windows MSVC BenchmarkStringEquality/bytes/last/128/Go 6.534 ns/op +1.505 ns/op / +29.9% (worse)
Windows MSVC BenchmarkStringEquality/bytes/last/128/LLGo 8.620 ns/op -0.046 ns/op / -0.5% (better)
Windows MSVC BenchmarkStringEquality/bytes/last/8/Go 5.692 ns/op +0.763 ns/op / +15.5% (worse)
Windows MSVC BenchmarkStringEquality/bytes/last/8/LLGo 4.074 ns/op -0.278 ns/op / -6.4% (better)
Windows MSVC BenchmarkStringEquality/strings/equal/1024/Go 15.500 ns/op -0.9 ns/op / -5.5% (better)
Windows MSVC BenchmarkStringEquality/strings/equal/1024/LLGo 30.340 ns/op +0.04 ns/op / +0.1% (worse)
Windows MSVC BenchmarkStringEquality/strings/equal/128/Go 6.262 ns/op -0.801 ns/op / -11.3% (better)
Windows MSVC BenchmarkStringEquality/strings/equal/128/LLGo 6.145 ns/op +0.044 ns/op / +0.7% (worse)
Windows MSVC BenchmarkStringEquality/strings/equal/8/Go 4.966 ns/op +0.229 ns/op / +4.8% (worse)
Windows MSVC BenchmarkStringEquality/strings/equal/8/LLGo 2.731 ns/op +0.018 ns/op / +0.7% (worse)
Windows MSVC BenchmarkStringEquality/strings/first/1024/Go 4.899 ns/op +0.179 ns/op / +3.8% (worse)
Windows MSVC BenchmarkStringEquality/strings/first/1024/LLGo 1.632 ns/op -0.267 ns/op / -14.1% (better)
Windows MSVC BenchmarkStringEquality/strings/first/128/Go 5.143 ns/op -0.606 ns/op / -10.5% (better)
Windows MSVC BenchmarkStringEquality/strings/first/128/LLGo 1.636 ns/op -0.017 ns/op / -1.0% (better)
Windows MSVC BenchmarkStringEquality/strings/first/8/Go 4.670 ns/op -0.243 ns/op / -4.9% (better)
Windows MSVC BenchmarkStringEquality/strings/first/8/LLGo 1.657 ns/op -0.249 ns/op / -13.1% (better)
Windows MSVC BenchmarkStringEquality/strings/last/1024/Go 14.630 ns/op -0.14 ns/op / -0.9% (better)
Windows MSVC BenchmarkStringEquality/strings/last/1024/LLGo 30.290 ns/op -0.03 ns/op / -0.1% (better)
Windows MSVC BenchmarkStringEquality/strings/last/128/Go 5.727 ns/op -0.051 ns/op / -0.9% (better)
Windows MSVC BenchmarkStringEquality/strings/last/128/LLGo 6.023 ns/op -0.027 ns/op / -0.4% (better)
Windows MSVC BenchmarkStringEquality/strings/last/8/Go 4.892 ns/op -0.864 ns/op / -15.0% (better)
Windows MSVC BenchmarkStringEquality/strings/last/8/LLGo 2.177 ns/op +0.01 ns/op / +0.5% (worse)
Windows MSVC 386 BenchmarkStringEquality/bytes/equal/1024/Go 19.610 ns/op -0.73 ns/op / -3.6% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/equal/1024/LLGo 52.420 ns/op -0.59 ns/op / -1.1% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/equal/128/Go 5.730 ns/op -0.119 ns/op / -2.0% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/equal/128/LLGo 9.389 ns/op -0.147 ns/op / -1.5% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/equal/8/Go 4.181 ns/op -0.006 ns/op / -0.1% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/equal/8/LLGo 2.679 ns/op -0.005 ns/op / -0.2% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/first/1024/Go 4.479 ns/op -0.118 ns/op / -2.6% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/first/1024/LLGo 2.299 ns/op +0.092 ns/op / +4.2% (worse)
Windows MSVC 386 BenchmarkStringEquality/bytes/first/128/Go 4.439 ns/op -0.133 ns/op / -2.9% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/first/128/LLGo 2.163 ns/op -0.024 ns/op / -1.1% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/first/8/Go 4.088 ns/op -0.154 ns/op / -3.6% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/first/8/LLGo 2.313 ns/op +0.12 ns/op / +5.5% (worse)
Windows MSVC 386 BenchmarkStringEquality/bytes/last/1024/Go 19.510 ns/op -0.71 ns/op / -3.5% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/last/1024/LLGo 52.180 ns/op -2.46 ns/op / -4.5% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/last/128/Go 5.457 ns/op -0.268 ns/op / -4.7% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/last/128/LLGo 9.195 ns/op -0.071 ns/op / -0.8% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/last/8/Go 4.103 ns/op -0.073 ns/op / -1.7% (better)
Windows MSVC 386 BenchmarkStringEquality/bytes/last/8/LLGo 2.563 ns/op -0.045 ns/op / -1.7% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/equal/1024/Go 18.590 ns/op -0.72 ns/op / -3.7% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/equal/1024/LLGo 53.080 ns/op +3.11 ns/op / +6.2% (worse)
Windows MSVC 386 BenchmarkStringEquality/strings/equal/128/Go 5.144 ns/op -0.255 ns/op / -4.7% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/equal/128/LLGo 8.967 ns/op -0.076 ns/op / -0.8% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/equal/8/Go 3.982 ns/op -0.251 ns/op / -5.9% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/equal/8/LLGo 2.696 ns/op +0.032 ns/op / +1.2% (worse)
Windows MSVC 386 BenchmarkStringEquality/strings/first/1024/Go 4.321 ns/op -0.195 ns/op / -4.3% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/first/1024/LLGo 2.315 ns/op +0.106 ns/op / +4.8% (worse)
Windows MSVC 386 BenchmarkStringEquality/strings/first/128/Go 4.320 ns/op -0.185 ns/op / -4.1% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/first/128/LLGo 2.232 ns/op -0.002 ns/op / -0.1% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/first/8/Go 3.748 ns/op -0.132 ns/op / -3.4% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/first/8/LLGo 2.302 ns/op +0.019 ns/op / +0.8% (worse)
Windows MSVC 386 BenchmarkStringEquality/strings/last/1024/Go 18.390 ns/op -0.74 ns/op / -3.9% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/last/1024/LLGo 48.460 ns/op -7.64 ns/op / -13.6% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/last/128/Go 5.191 ns/op -0.264 ns/op / -4.8% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/last/128/LLGo 8.779 ns/op -0.381 ns/op / -4.2% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/last/8/Go 4.066 ns/op -0.429 ns/op / -9.5% (better)
Windows MSVC 386 BenchmarkStringEquality/strings/last/8/LLGo 2.307 ns/op -0.048 ns/op / -2.0% (better)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/equal/1024/Go 31.130 ns/op -0.3 ns/op / -1.0% (better)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/equal/1024/LLGo 39.260 ns/op +0.23 ns/op / +0.6% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/equal/128/Go 6.748 ns/op +0.046 ns/op / +0.7% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/equal/128/LLGo 7.047 ns/op +0.012 ns/op / +0.2% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/equal/8/Go 3.724 ns/op +0.026 ns/op / +0.7% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/equal/8/LLGo 2.655 ns/op 0 ns/op / +0.0%
Windows MSVC ARM64 BenchmarkStringEquality/bytes/first/1024/Go 4.738 ns/op -0.031 ns/op / -0.7% (better)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/first/1024/LLGo 1.815 ns/op -0.024 ns/op / -1.3% (better)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/first/128/Go 4.754 ns/op +0.01 ns/op / +0.2% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/first/128/LLGo 1.864 ns/op -0.001 ns/op / -0.1% (better)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/first/8/Go 3.543 ns/op -0.002 ns/op / -0.1% (better)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/first/8/LLGo 1.776 ns/op 0 ns/op / +0.0%
Windows MSVC ARM64 BenchmarkStringEquality/bytes/last/1024/Go 31.200 ns/op -0.2 ns/op / -0.6% (better)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/last/1024/LLGo 38.940 ns/op +0.04 ns/op / +0.1% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/last/128/Go 6.695 ns/op +0.052 ns/op / +0.8% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/last/128/LLGo 6.710 ns/op -0.002 ns/op / -0.0298% (better)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/last/8/Go 3.542 ns/op -0.003 ns/op / -0.1% (better)
Windows MSVC ARM64 BenchmarkStringEquality/bytes/last/8/LLGo 2.464 ns/op +0.001 ns/op / +0.0406% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/strings/equal/1024/Go 27.360 ns/op -0.02 ns/op / -0.1% (better)
Windows MSVC ARM64 BenchmarkStringEquality/strings/equal/1024/LLGo 36.040 ns/op -0.03 ns/op / -0.1% (better)
Windows MSVC ARM64 BenchmarkStringEquality/strings/equal/128/Go 6.057 ns/op -0.006 ns/op / -0.1% (better)
Windows MSVC ARM64 BenchmarkStringEquality/strings/equal/128/LLGo 5.922 ns/op +0.024 ns/op / +0.4% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/strings/equal/8/Go 3.946 ns/op +0.019 ns/op / +0.5% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/strings/equal/8/LLGo 2.473 ns/op +0.008 ns/op / +0.3% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/strings/first/1024/Go 4.536 ns/op +0.039 ns/op / +0.9% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/strings/first/1024/LLGo 1.761 ns/op +0.035 ns/op / +2.0% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/strings/first/128/Go 4.553 ns/op +0.01 ns/op / +0.2% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/strings/first/128/LLGo 1.708 ns/op -0.029 ns/op / -1.7% (better)
Windows MSVC ARM64 BenchmarkStringEquality/strings/first/8/Go 3.856 ns/op +0.009 ns/op / +0.2% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/strings/first/8/LLGo 1.707 ns/op -0.067 ns/op / -3.8% (better)
Windows MSVC ARM64 BenchmarkStringEquality/strings/last/1024/Go 27.130 ns/op +0.03 ns/op / +0.1% (worse)
Windows MSVC ARM64 BenchmarkStringEquality/strings/last/1024/LLGo 35.240 ns/op -0.12 ns/op / -0.3% (better)
Windows MSVC ARM64 BenchmarkStringEquality/strings/last/128/Go 5.910 ns/op -0.029 ns/op / -0.5% (better)
Windows MSVC ARM64 BenchmarkStringEquality/strings/last/128/LLGo 5.466 ns/op -0.024 ns/op / -0.4% (better)
Windows MSVC ARM64 BenchmarkStringEquality/strings/last/8/Go 3.851 ns/op -0.003 ns/op / -0.1% (better)
Windows MSVC ARM64 BenchmarkStringEquality/strings/last/8/LLGo 2.235 ns/op -0.001 ns/op / -0.04472% (better)

Program measurements

Platform Workload File size vs base Text size vs base Build vs base Run vs base
Linux cprintf 8576 B 0 B / +0.0% 387 B 0 B / +0.0% 1.277 s -46.16 ms / -3.5% (better) 1.486 ms +135.8 us / +10.1% (worse)
Linux cprintf-lto 8240 B 0 B / +0.0% 368 B 0 B / +0.0% 1.258 s -60.54 ms / -4.6% (better) 1.561 ms +29.76 us / +1.9% (worse)
Linux fmtprintf 1944624 B +152 B / +0.007817% (worse) 269914 B 0 B / +0.0% 8.104 s +294.8 ms / +3.8% (worse) 3.449 ms -120.2 us / -3.4% (better)
Linux fmtprintf-lto 1021960 B -64 B / -0.006262% (better) 210250 B 0 B / +0.0% 18.148 s -81.87 ms / -0.4% (better) 3.375 ms -1.003 ms / -22.9% (better)
Linux println 261288 B -88 B / -0.03367% (better) 19137 B 0 B / +0.0% 1.386 s -207.3 ms / -13.0% (better) 3.078 ms +610.9 us / +24.8% (worse)
Linux println-lto 102472 B -16 B / -0.01561% (better) 15642 B 0 B / +0.0% 2.187 s -75.23 ms / -3.3% (better) 2.570 ms +631.6 us / +32.6% (worse)
macOS cprintf 50944 B 0 B / +0.0% 4409 B 0 B / +0.0% 1.422 s +58.29 ms / +4.3% (worse) 3.372 ms -1.07 ms / -24.1% (better)
macOS cprintf-lto 50608 B 0 B / +0.0% 161 B 0 B / +0.0% 1.189 s -137.4 ms / -10.4% (better) 3.058 ms -4.176 ms / -57.7% (better)
macOS fmtprintf 1233696 B 0 B / +0.0% 675953 B 0 B / +0.0% 5.320 s -963.8 ms / -15.3% (better) 7.453 ms +1.522 ms / +25.7% (worse)
macOS fmtprintf-lto 871600 B 0 B / +0.0% 521157 B 0 B / +0.0% 8.023 s -1.507 s / -15.8% (better) 4.314 ms -1.803 ms / -29.5% (better)
macOS println 100592 B 0 B / +0.0% 26339 B 0 B / +0.0% 1.400 s -133.1 ms / -8.7% (better) 5.039 ms -1.086 ms / -17.7% (better)
macOS println-lto 85632 B 0 B / +0.0% 22487 B 0 B / +0.0% 1.471 s -188.7 ms / -11.4% (better) 4.617 ms +1.138 ms / +32.7% (worse)
Windows MinGW cprintf 749568 B 0 B / +0.0% 4230 B 0 B / +0.0% 1.744 s +56.7 ms / +3.4% (worse) 3.273 ms +353.7 us / +12.1% (worse)
Windows MinGW cprintf-lto 60928 B 0 B / +0.0% 4182 B 0 B / +0.0% 1.764 s +12.57 ms / +0.7% (worse) 2.791 ms -2.393 ms / -46.2% (better)
Windows MinGW fmtprintf 5159424 B 0 B / +0.0% 361910 B 0 B / +0.0% 5.767 s -17.99 ms / -0.3% (better) 8.517 ms -1.131 ms / -11.7% (better)
Windows MinGW fmtprintf-lto 2785280 B 0 B / +0.0% 306774 B 0 B / +0.0% 9.156 s -247.4 ms / -2.6% (better) 8.297 ms +60.4 us / +0.7% (worse)
Windows MinGW println 811520 B 0 B / +0.0% 27382 B 0 B / +0.0% 1.729 s -94.08 ms / -5.2% (better) 6.065 ms +299 us / +5.2% (worse)
Windows MinGW println-lto 232960 B 0 B / +0.0% 22582 B 0 B / +0.0% 1.969 s -146.1 ms / -6.9% (better) 5.911 ms -338.6 us / -5.4% (better)
Windows MinGW 386 cprintf 754688 B 0 B / +0.0% 22694 B 0 B / +0.0% 2.191 s +97.08 ms / +4.6% (worse) 9.651 ms +792 us / +8.9% (worse)
Windows MinGW 386 cprintf-lto 282624 B 0 B / +0.0% 19476 B 0 B / +0.0% 2.504 s +28.02 ms / +1.1% (worse) 9.615 ms +687.2 us / +7.7% (worse)
Windows MinGW 386 fmtprintf 4510208 B 0 B / +0.0% 284832 B 0 B / +0.0% 7.354 s +15.19 ms / +0.2% (worse) 13.012 ms +160.4 us / +1.2% (worse)
Windows MinGW 386 fmtprintf-lto 2903040 B 0 B / +0.0% 256706 B 0 B / +0.0% 12.115 s +103.1 ms / +0.9% (worse) 13.692 ms +676.9 us / +5.2% (worse)
Windows MinGW 386 println 753152 B 0 B / +0.0% 22624 B 0 B / +0.0% 2.151 s +93.47 ms / +4.5% (worse) 9.833 ms +1.035 ms / +11.8% (worse)
Windows MinGW 386 println-lto 282112 B 0 B / +0.0% 19410 B 0 B / +0.0% 2.517 s +125.1 ms / +5.2% (worse) 9.665 ms +288.6 us / +3.1% (worse)
Windows MinGW ARM64 cprintf 756736 B 0 B / +0.0% 4028 B 0 B / +0.0% 2.386 s -22.27 ms / -0.9% (better) 7.075 ms -250.3 us / -3.4% (better)
Windows MinGW ARM64 cprintf-lto 60416 B 0 B / +0.0% 3984 B 0 B / +0.0% 2.423 s +27.54 ms / +1.1% (worse) 7.163 ms +278.9 us / +4.1% (worse)
Windows MinGW ARM64 fmtprintf 5100544 B 0 B / +0.0% 302056 B 0 B / +0.0% 6.923 s -279 ms / -3.9% (better) 15.192 ms -546.3 us / -3.5% (better)
Windows MinGW ARM64 fmtprintf-lto 2842112 B 0 B / +0.0% 257844 B 0 B / +0.0% 10.815 s -357.7 ms / -3.2% (better) 14.994 ms -1.362 ms / -8.3% (better)
Windows MinGW ARM64 println 817152 B 0 B / +0.0% 25568 B 0 B / +0.0% 2.333 s -7.808 ms / -0.3% (better) 11.992 ms +411.2 us / +3.6% (worse)
Windows MinGW ARM64 println-lto 236544 B 0 B / +0.0% 21816 B 0 B / +0.0% 2.661 s +39.91 ms / +1.5% (worse) 11.390 ms +93.4 us / +0.8% (worse)
Windows MSVC cprintf 993792 B 0 B / +0.0% 66003 B 0 B / +0.0% 1.585 s -41.07 ms / -2.5% (better) 2.747 ms -30.9 us / -1.1% (better)
Windows MSVC cprintf-lto 308736 B 0 B / +0.0% 65971 B 0 B / +0.0% 1.663 s +30.8 ms / +1.9% (worse) 2.701 ms -2.6 us / -0.1% (better)
Windows MSVC fmtprintf 5459456 B -512 B / -0.009377% (better) 457990 B 0 B / +0.0% 5.657 s -46.69 ms / -0.8% (better) 9.470 ms -63.9 us / -0.7% (better)
Windows MSVC fmtprintf-lto 3108352 B 0 B / +0.0% 405302 B 0 B / +0.0% 8.957 s -166 ms / -1.8% (better) 9.579 ms +544.3 us / +6.0% (worse)
Windows MSVC println 1125888 B 0 B / +0.0% 123526 B 0 B / +0.0% 1.721 s +129.5 ms / +8.1% (worse) 5.658 ms +66 us / +1.2% (worse)
Windows MSVC println-lto 553984 B 0 B / +0.0% 119414 B 0 B / +0.0% 1.777 s -65.58 ms / -3.6% (better) 6.711 ms +811.8 us / +13.8% (worse)
Windows MSVC 386 cprintf 664064 B 0 B / +0.0% 21330 B 0 B / +0.0% 1.328 s -59.4 ms / -4.3% (better) 6.613 ms -152 us / -2.2% (better)
Windows MSVC 386 cprintf-lto 221696 B 0 B / +0.0% 18825 B 0 B / +0.0% 1.515 s -23.13 ms / -1.5% (better) 6.616 ms -1.395 ms / -17.4% (better)
Windows MSVC 386 fmtprintf 4238336 B 0 B / +0.0% 268294 B 0 B / +0.0% 4.520 s -210.2 ms / -4.4% (better) 8.594 ms -1.131 ms / -11.6% (better)
Windows MSVC 386 fmtprintf-lto 2717184 B 0 B / +0.0% 236209 B 0 B / +0.0% 6.887 s -726.5 ms / -9.5% (better) 8.570 ms -638.4 us / -6.9% (better)
Windows MSVC 386 println 662016 B 0 B / +0.0% 21276 B 0 B / +0.0% 1.304 s -51.34 ms / -3.8% (better) 6.700 ms -15.9 us / -0.2% (better)
Windows MSVC 386 println-lto 220160 B 0 B / +0.0% 18755 B 0 B / +0.0% 1.510 s +6.57 ms / +0.4% (worse) 6.679 ms +166.9 us / +2.6% (worse)
Windows MSVC ARM64 cprintf 759296 B 0 B / +0.0% 4240 B 0 B / +0.0% 2.066 s +89.53 ms / +4.5% (worse) 8.152 ms +1.31 ms / +19.1% (worse)
Windows MSVC ARM64 cprintf-lto 66048 B 0 B / +0.0% 4140 B 0 B / +0.0% 2.097 s +85.09 ms / +4.2% (worse) 7.080 ms +56 us / +0.8% (worse)
Windows MSVC ARM64 fmtprintf 5096960 B 0 B / +0.0% 302380 B 0 B / +0.0% 6.171 s -156.5 ms / -2.5% (better) 15.672 ms +334.7 us / +2.2% (worse)
Windows MSVC ARM64 fmtprintf-lto 2850816 B 0 B / +0.0% 258784 B 0 B / +0.0% 9.686 s -135.3 ms / -1.4% (better) 16.710 ms +311.1 us / +1.9% (worse)
Windows MSVC ARM64 println 820224 B 0 B / +0.0% 26052 B 0 B / +0.0% 2.011 s +427.9 us / +0.02128% (worse) 13.042 ms +429.9 us / +3.4% (worse)
Windows MSVC ARM64 println-lto 242176 B 0 B / +0.0% 22368 B 0 B / +0.0% 2.277 s -728.7 us / -0.03199% (better) 12.723 ms -135.3 us / -1.1% (better)
Core language and compiler benchmarks
Platform Benchmark ns/op vs base
Linux BenchmarkLookupPCRandom 14.570 ns/op -0.18 ns/op / -1.2% (better)
Linux BenchmarkMergeCompilerFlags 212.200 ns/op +9.9 ns/op / +4.9% (worse)
Linux BenchmarkMergeLinkerFlags 138.300 ns/op -0.9 ns/op / -0.6% (better)
Linux BenchmarkChannelBuffered 72.960 ns/op -0.2 ns/op / -0.3% (better)
Linux BenchmarkChannelHandoff 13402 ns/op -466 ns/op / -3.4% (better)
Linux BenchmarkDefer 17.200 ns/op -0.02 ns/op / -0.1% (better)
Linux BenchmarkDirectCall 1.168 ns/op -0.01 ns/op / -0.8% (better)
Linux BenchmarkGlobalRead 1.187 ns/op 0 ns/op / +0.0%
Linux BenchmarkGlobalWrite 7.809 ns/op +0.01 ns/op / +0.1% (worse)
Linux BenchmarkGoroutine 29774 ns/op +4936 ns/op / +19.9% (worse)
Linux BenchmarkInterfaceCall 4.804 ns/op -0.033 ns/op / -0.7% (better)
Linux BenchmarkRuntimeGetG 2.514 ns/op +0.023 ns/op / +0.9% (worse)
macOS BenchmarkLookupPCRandom 16.170 ns/op +0.31 ns/op / +2.0% (worse)
macOS BenchmarkMergeCompilerFlags 124.600 ns/op +9.5 ns/op / +8.3% (worse)
macOS BenchmarkMergeLinkerFlags 91.330 ns/op +8.11 ns/op / +9.7% (worse)
macOS BenchmarkChannelBuffered 32.440 ns/op -8.15 ns/op / -20.1% (better)
macOS BenchmarkChannelHandoff 8458 ns/op -278 ns/op / -3.2% (better)
macOS BenchmarkDefer 13.960 ns/op 0 ns/op / +0.0%
macOS BenchmarkDirectCall 1.161 ns/op -0.05 ns/op / -4.1% (better)
macOS BenchmarkGlobalRead 1.076 ns/op -0.063 ns/op / -5.5% (better)
macOS BenchmarkGlobalWrite 1.188 ns/op -0.163 ns/op / -12.1% (better)
macOS BenchmarkGoroutine 60693 ns/op +465 ns/op / +0.8% (worse)
macOS BenchmarkInterfaceCall 3.880 ns/op -0.467 ns/op / -10.7% (better)
macOS BenchmarkRuntimeGetG 2.333 ns/op -0.026 ns/op / -1.1% (better)
Windows MinGW BenchmarkLookupPCRandom 9.514 ns/op -0.046 ns/op / -0.5% (better)
Windows MinGW BenchmarkMergeCompilerFlags 370.900 ns/op -42.4 ns/op / -10.3% (better)
Windows MinGW BenchmarkMergeLinkerFlags 334.300 ns/op -9.7 ns/op / -2.8% (better)
Windows MinGW BenchmarkChannelBuffered 27.200 ns/op +0.01 ns/op / +0.03678% (worse)
Windows MinGW BenchmarkChannelHandoff 518.400 ns/op +2.1 ns/op / +0.4% (worse)
Windows MinGW BenchmarkDefer 12.300 ns/op 0 ns/op / +0.0%
Windows MinGW BenchmarkDirectCall 1.358 ns/op +0.001 ns/op / +0.1% (worse)
Windows MinGW BenchmarkGlobalRead 1.357 ns/op +0.001 ns/op / +0.1% (worse)
Windows MinGW BenchmarkGlobalWrite 2.172 ns/op +0.007 ns/op / +0.3% (worse)
Windows MinGW BenchmarkGoroutine 58794 ns/op -1572 ns/op / -2.6% (better)
Windows MinGW BenchmarkInterfaceCall 5.706 ns/op -0.005 ns/op / -0.1% (better)
Windows MinGW BenchmarkRuntimeGetG 1.408 ns/op -0.001 ns/op / -0.1% (better)
Windows MinGW 386 BenchmarkLookupPCRandom 26.610 ns/op -0.01 ns/op / -0.03757% (better)
Windows MinGW 386 BenchmarkMergeCompilerFlags 756.900 ns/op -34.9 ns/op / -4.4% (better)
Windows MinGW 386 BenchmarkMergeLinkerFlags 698.900 ns/op -7 ns/op / -1.0% (better)
Windows MinGW 386 BenchmarkChannelBuffered 44.330 ns/op +0.03 ns/op / +0.1% (worse)
Windows MinGW 386 BenchmarkChannelHandoff 613 ns/op +55.4 ns/op / +9.9% (worse)
Windows MinGW 386 BenchmarkDefer 14.330 ns/op +0.02 ns/op / +0.1% (worse)
Windows MinGW 386 BenchmarkDirectCall 1.566 ns/op +0.017 ns/op / +1.1% (worse)
Windows MinGW 386 BenchmarkGlobalRead 1.558 ns/op +0.008 ns/op / +0.5% (worse)
Windows MinGW 386 BenchmarkGlobalWrite 7.806 ns/op +0.037 ns/op / +0.5% (worse)
Windows MinGW 386 BenchmarkGoroutine 110423 ns/op +2726 ns/op / +2.5% (worse)
Windows MinGW 386 BenchmarkInterfaceCall 7.485 ns/op +0.044 ns/op / +0.6% (worse)
Windows MinGW 386 BenchmarkRuntimeGetG 1.933 ns/op +0.004 ns/op / +0.2% (worse)
Windows MinGW ARM64 BenchmarkLookupPCRandom 12.020 ns/op -0.12 ns/op / -1.0% (better)
Windows MinGW ARM64 BenchmarkMergeCompilerFlags 586.500 ns/op +9.5 ns/op / +1.6% (worse)
Windows MinGW ARM64 BenchmarkMergeLinkerFlags 545.900 ns/op +16.3 ns/op / +3.1% (worse)
Windows MinGW ARM64 BenchmarkChannelBuffered 43.580 ns/op -0.01 ns/op / -0.02294% (better)
Windows MinGW ARM64 BenchmarkChannelHandoff 1908 ns/op +44 ns/op / +2.4% (worse)
Windows MinGW ARM64 BenchmarkDefer 12.310 ns/op +0.55 ns/op / +4.7% (worse)
Windows MinGW ARM64 BenchmarkDirectCall 0.590 ns/op -0.0001 ns/op / -0.01696% (better)
Windows MinGW ARM64 BenchmarkGlobalRead 0.663 ns/op -0.0007 ns/op / -0.1% (better)
Windows MinGW ARM64 BenchmarkGlobalWrite 0.663 ns/op -0.0001 ns/op / -0.01507% (better)
Windows MinGW ARM64 BenchmarkGoroutine 67138 ns/op +265 ns/op / +0.4% (worse)
Windows MinGW ARM64 BenchmarkInterfaceCall 3.850 ns/op -0.003 ns/op / -0.1% (better)
Windows MinGW ARM64 BenchmarkRuntimeGetG 1.770 ns/op 0 ns/op / +0.0%
Windows MSVC BenchmarkLookupPCRandom 9.692 ns/op +0.104 ns/op / +1.1% (worse)
Windows MSVC BenchmarkMergeCompilerFlags 417.200 ns/op +39.4 ns/op / +10.4% (worse)
Windows MSVC BenchmarkMergeLinkerFlags 369.500 ns/op +32.3 ns/op / +9.6% (worse)
Windows MSVC BenchmarkChannelBuffered 26.350 ns/op +0.03 ns/op / +0.1% (worse)
Windows MSVC BenchmarkChannelHandoff 561 ns/op -0.9 ns/op / -0.2% (better)
Windows MSVC BenchmarkDefer 12.490 ns/op +0.04 ns/op / +0.3% (worse)
Windows MSVC BenchmarkDirectCall 1.366 ns/op +0.004 ns/op / +0.3% (worse)
Windows MSVC BenchmarkGlobalRead 1.369 ns/op -0.097 ns/op / -6.6% (better)
Windows MSVC BenchmarkGlobalWrite 2.186 ns/op +0.013 ns/op / +0.6% (worse)
Windows MSVC BenchmarkGoroutine 58714 ns/op +1667 ns/op / +2.9% (worse)
Windows MSVC BenchmarkInterfaceCall 6.099 ns/op +0.132 ns/op / +2.2% (worse)
Windows MSVC BenchmarkRuntimeGetG 1.637 ns/op -0.003 ns/op / -0.2% (better)
Windows MSVC 386 BenchmarkLookupPCRandom 15.880 ns/op -0.82 ns/op / -4.9% (better)
Windows MSVC 386 BenchmarkMergeCompilerFlags 383.600 ns/op -33.4 ns/op / -8.0% (better)
Windows MSVC 386 BenchmarkMergeLinkerFlags 375.700 ns/op -27.3 ns/op / -6.8% (better)
Windows MSVC 386 BenchmarkChannelBuffered 48.030 ns/op +0.23 ns/op / +0.5% (worse)
Windows MSVC 386 BenchmarkChannelHandoff 755.900 ns/op +99.6 ns/op / +15.2% (worse)
Windows MSVC 386 BenchmarkDefer 8.381 ns/op -0.131 ns/op / -1.5% (better)
Windows MSVC 386 BenchmarkDirectCall 0.934 ns/op -0.0447 ns/op / -4.6% (better)
Windows MSVC 386 BenchmarkGlobalRead 0.943 ns/op -0.0136 ns/op / -1.4% (better)
Windows MSVC 386 BenchmarkGlobalWrite 8.505 ns/op +0.074 ns/op / +0.9% (worse)
Windows MSVC 386 BenchmarkGoroutine 57948 ns/op +1570 ns/op / +2.8% (worse)
Windows MSVC 386 BenchmarkInterfaceCall 3.720 ns/op -0.07 ns/op / -1.8% (better)
Windows MSVC 386 BenchmarkRuntimeGetG 0.994 ns/op +0.0101 ns/op / +1.0% (worse)
Windows MSVC ARM64 BenchmarkLookupPCRandom 12.170 ns/op +0.05 ns/op / +0.4% (worse)
Windows MSVC ARM64 BenchmarkMergeCompilerFlags 577 ns/op -1.9 ns/op / -0.3% (better)
Windows MSVC ARM64 BenchmarkMergeLinkerFlags 541.300 ns/op -3.5 ns/op / -0.6% (better)
Windows MSVC ARM64 BenchmarkChannelBuffered 46.910 ns/op -0.6 ns/op / -1.3% (better)
Windows MSVC ARM64 BenchmarkChannelHandoff 1403 ns/op +118 ns/op / +9.2% (worse)
Windows MSVC ARM64 BenchmarkDefer 11.880 ns/op +0.12 ns/op / +1.0% (worse)
Windows MSVC ARM64 BenchmarkDirectCall 0.590 ns/op -0.0001 ns/op / -0.01695% (better)
Windows MSVC ARM64 BenchmarkGlobalRead 0.664 ns/op +0.0001 ns/op / +0.01507% (worse)
Windows MSVC ARM64 BenchmarkGlobalWrite 3.745 ns/op -0.014 ns/op / -0.4% (better)
Windows MSVC ARM64 BenchmarkGoroutine 55448 ns/op -3855 ns/op / -6.5% (better)
Windows MSVC ARM64 BenchmarkInterfaceCall 3.863 ns/op +0.004 ns/op / +0.1% (worse)
Windows MSVC ARM64 BenchmarkRuntimeGetG 1.771 ns/op -0.034 ns/op / -1.9% (better)
Timer runtime benchmarks
Platform Operation and runtime ns/op vs base
Linux AfterFuncZeroDelivery/Go 908.900 ns/op -29.2 ns/op / -3.1% (better)
Linux AfterFuncZeroDelivery/LLGo 39045 ns/op -6506 ns/op / -14.3% (better)
Linux CreateStop/Go 299.600 ns/op -2.3 ns/op / -0.8% (better)
Linux CreateStop/LLGo 1391 ns/op +6 ns/op / +0.4% (worse)
Linux RearmStopped/Go 116 ns/op -0.8 ns/op / -0.7% (better)
Linux RearmStopped/LLGo 909.700 ns/op -517.3 ns/op / -36.3% (better)
Linux ResetActive/Go 67.630 ns/op -1.18 ns/op / -1.7% (better)
Linux ResetActive/LLGo 927.200 ns/op +232.3 ns/op / +33.4% (worse)
Linux ResetHeap1024/Go 67.480 ns/op -0.5 ns/op / -0.7% (better)
Linux ResetHeap1024/LLGo 133.100 ns/op -66.3 ns/op / -33.2% (better)
macOS AfterFuncZeroDelivery/Go 583.200 ns/op +11.3 ns/op / +2.0% (worse)
macOS AfterFuncZeroDelivery/LLGo 80306 ns/op +34772 ns/op / +76.4% (worse)
macOS CreateStop/Go 188.600 ns/op +39.5 ns/op / +26.5% (worse)
macOS CreateStop/LLGo 437.100 ns/op -51.9 ns/op / -10.6% (better)
macOS RearmStopped/Go 66.550 ns/op -2 ns/op / -2.9% (better)
macOS RearmStopped/LLGo 328 ns/op +100.7 ns/op / +44.3% (worse)
macOS ResetActive/Go 51.810 ns/op +1.44 ns/op / +2.9% (worse)
macOS ResetActive/LLGo 133.600 ns/op +8.4 ns/op / +6.7% (worse)
macOS ResetHeap1024/Go 56.660 ns/op +6.29 ns/op / +12.5% (worse)
macOS ResetHeap1024/LLGo 128.400 ns/op +60.31 ns/op / +88.6% (worse)
Windows MinGW AfterFuncZeroDelivery/Go 376.800 ns/op -0.8 ns/op / -0.2% (better)
Windows MinGW AfterFuncZeroDelivery/LLGo 112514 ns/op -944 ns/op / -0.8% (better)
Windows MinGW CreateStop/Go 90.550 ns/op +0.2 ns/op / +0.2% (worse)
Windows MinGW CreateStop/LLGo 395.800 ns/op -15.6 ns/op / -3.8% (better)
Windows MinGW RearmStopped/Go 24.460 ns/op +0.02 ns/op / +0.1% (worse)
Windows MinGW RearmStopped/LLGo 176.400 ns/op -10.6 ns/op / -5.7% (better)
Windows MinGW ResetActive/Go 14.810 ns/op +0.03 ns/op / +0.2% (worse)
Windows MinGW ResetActive/LLGo 133.500 ns/op +8 ns/op / +6.4% (worse)
Windows MinGW ResetHeap1024/Go 14.890 ns/op +0.08 ns/op / +0.5% (worse)
Windows MinGW ResetHeap1024/LLGo 86.270 ns/op +0.35 ns/op / +0.4% (worse)
Windows MinGW 386 AfterFuncZeroDelivery/Go 963.500 ns/op +5.1 ns/op / +0.5% (worse)
Windows MinGW 386 AfterFuncZeroDelivery/LLGo 204769 ns/op +2042 ns/op / +1.0% (worse)
Windows MinGW 386 CreateStop/Go 192.600 ns/op -6.3 ns/op / -3.2% (better)
Windows MinGW 386 CreateStop/LLGo 433.600 ns/op -4.8 ns/op / -1.1% (better)
Windows MinGW 386 RearmStopped/Go 63.650 ns/op +0.19 ns/op / +0.3% (worse)
Windows MinGW 386 RearmStopped/LLGo 327 ns/op -59.2 ns/op / -15.3% (better)
Windows MinGW 386 ResetActive/Go 39.210 ns/op +0.08 ns/op / +0.2% (worse)
Windows MinGW 386 ResetActive/LLGo 985.700 ns/op -7.6 ns/op / -0.8% (better)
Windows MinGW 386 ResetHeap1024/Go 39.480 ns/op -0.1 ns/op / -0.3% (better)
Windows MinGW 386 ResetHeap1024/LLGo 149.900 ns/op +0.8 ns/op / +0.5% (worse)
Windows MinGW ARM64 AfterFuncZeroDelivery/Go 663.700 ns/op +5 ns/op / +0.8% (worse)
Windows MinGW ARM64 AfterFuncZeroDelivery/LLGo 149584 ns/op -2140 ns/op / -1.4% (better)
Windows MinGW ARM64 CreateStop/Go 210.300 ns/op +12.1 ns/op / +6.1% (worse)
Windows MinGW ARM64 CreateStop/LLGo 330.900 ns/op -21 ns/op / -6.0% (better)
Windows MinGW ARM64 RearmStopped/Go 70.640 ns/op +0.02 ns/op / +0.02832% (worse)
Windows MinGW ARM64 RearmStopped/LLGo 164.400 ns/op +1.1 ns/op / +0.7% (worse)
Windows MinGW ARM64 ResetActive/Go 30.850 ns/op -0.2 ns/op / -0.6% (better)
Windows MinGW ARM64 ResetActive/LLGo 104 ns/op +8.64 ns/op / +9.1% (worse)
Windows MinGW ARM64 ResetHeap1024/Go 31.030 ns/op -0.08 ns/op / -0.3% (better)
Windows MinGW ARM64 ResetHeap1024/LLGo 93.120 ns/op +0.35 ns/op / +0.4% (worse)
Windows MSVC AfterFuncZeroDelivery/Go 388.300 ns/op -1.4 ns/op / -0.4% (better)
Windows MSVC AfterFuncZeroDelivery/LLGo 109330 ns/op -601 ns/op / -0.5% (better)
Windows MSVC CreateStop/Go 91.040 ns/op -0.19 ns/op / -0.2% (better)
Windows MSVC CreateStop/LLGo 319.900 ns/op -11.8 ns/op / -3.6% (better)
Windows MSVC RearmStopped/Go 24.550 ns/op -0.51 ns/op / -2.0% (better)
Windows MSVC RearmStopped/LLGo 180.400 ns/op -2.1 ns/op / -1.2% (better)
Windows MSVC ResetActive/Go 14.870 ns/op -1.03 ns/op / -6.5% (better)
Windows MSVC ResetActive/LLGo 129.800 ns/op -6 ns/op / -4.4% (better)
Windows MSVC ResetHeap1024/Go 14.830 ns/op -0.38 ns/op / -2.5% (better)
Windows MSVC ResetHeap1024/LLGo 85.910 ns/op +0.41 ns/op / +0.5% (worse)
Windows MSVC 386 AfterFuncZeroDelivery/Go 613.400 ns/op -41.6 ns/op / -6.4% (better)
Windows MSVC 386 AfterFuncZeroDelivery/LLGo 107914 ns/op -8608 ns/op / -7.4% (better)
Windows MSVC 386 CreateStop/Go 160.900 ns/op -7.2 ns/op / -4.3% (better)
Windows MSVC 386 CreateStop/LLGo 485.200 ns/op -20.4 ns/op / -4.0% (better)
Windows MSVC 386 RearmStopped/Go 63.760 ns/op -2.07 ns/op / -3.1% (better)
Windows MSVC 386 RearmStopped/LLGo 473.400 ns/op +113 ns/op / +31.4% (worse)
Windows MSVC 386 ResetActive/Go 29.860 ns/op -1.55 ns/op / -4.9% (better)
Windows MSVC 386 ResetActive/LLGo 761.300 ns/op -38 ns/op / -4.8% (better)
Windows MSVC 386 ResetHeap1024/Go 30.140 ns/op -1.44 ns/op / -4.6% (better)
Windows MSVC 386 ResetHeap1024/LLGo 96.140 ns/op -3.75 ns/op / -3.8% (better)
Windows MSVC ARM64 AfterFuncZeroDelivery/Go 677.100 ns/op +3.9 ns/op / +0.6% (worse)
Windows MSVC ARM64 AfterFuncZeroDelivery/LLGo 142603 ns/op -2797 ns/op / -1.9% (better)
Windows MSVC ARM64 CreateStop/Go 208.400 ns/op +6.5 ns/op / +3.2% (worse)
Windows MSVC ARM64 CreateStop/LLGo 272.400 ns/op -1.5 ns/op / -0.5% (better)
Windows MSVC ARM64 RearmStopped/Go 70.560 ns/op +0.2 ns/op / +0.3% (worse)
Windows MSVC ARM64 RearmStopped/LLGo 166.100 ns/op +5.7 ns/op / +3.6% (worse)
Windows MSVC ARM64 ResetActive/Go 31.150 ns/op -0.07 ns/op / -0.2% (better)
Windows MSVC ARM64 ResetActive/LLGo 89.470 ns/op +2.39 ns/op / +2.7% (worse)
Windows MSVC ARM64 ResetHeap1024/Go 31.120 ns/op +0.06 ns/op / +0.2% (worse)
Windows MSVC ARM64 ResetHeap1024/LLGo 93.550 ns/op -0.76 ns/op / -0.8% (better)

Compared with e2cca2cb8786 measured in the same runner job.

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.

3 participants