glsec

Performance

How long glsec takes to scan one large pipeline: 2,000 jobs with extends: and !reference chains, anchors and long scripts, about 650 KB, far bigger than real pipelines so that slow code shows. Every release since v1.0.0 and every change to main is measured on the same file, each time as the median of seven runs. Every dot links to its commit; hover for the details.

Scan time of each release, ms
Scan time by release and commit; the table below lists every value05001,0001,5002,000v1.0.0v1.3.0v1.6.0v1.10.0v1.14.0v1.18.0v1.21.1v1.24.1v1.0.0 · 2026-05-15 · 397 ms · AMD EPYC 9V74 80-Core Processorv1.0.1 · 2026-05-17 · 316 ms · AMD EPYC 9V74 80-Core Processorv1.1.0 · 2026-05-18 · 335 ms · AMD EPYC 9V74 80-Core Processorv1.2.0 · 2026-05-23 · 328 ms · AMD EPYC 9V74 80-Core Processorv1.3.0 · 2026-05-24 · 492 ms · 64 rules · AMD EPYC 9V74 80-Core Processorv1.4.0 · 2026-05-26 · 470 ms · 64 rules · AMD EPYC 9V74 80-Core Processorv1.5.0 · 2026-06-03 · 541 ms · 67 rules · AMD EPYC 9V74 80-Core Processorv1.5.1 · 2026-06-04 · 564 ms · 67 rules · AMD EPYC 9V74 80-Core Processorv1.6.0 · 2026-06-06 · 618 ms · 70 rules · AMD EPYC 9V74 80-Core Processorv1.7.0 · 2026-06-13 · 646 ms · 72 rules · AMD EPYC 9V74 80-Core Processorv1.8.0 · 2026-06-22 · 659 ms · 75 rules · AMD EPYC 9V74 80-Core Processorv1.9.0 · 2026-07-03 · 673 ms · 77 rules · AMD EPYC 9V74 80-Core Processorv1.10.0 · 2026-07-11 · 691 ms · 80 rules · AMD EPYC 9V74 80-Core Processorv1.11.0 · 2026-07-18 · 676 ms · 80 rules · AMD EPYC 9V74 80-Core Processorv1.12.0 · 2026-07-20 · 730 ms · 80 rules · AMD EPYC 9V74 80-Core Processorv1.13.0 · 2026-07-25 · 722 ms · 81 rules · AMD EPYC 9V74 80-Core Processorv1.14.0 · 2026-08-03 · 741 ms · 82 rules · AMD EPYC 9V74 80-Core Processorv1.15.0 · 2026-08-16 · 773 ms · 82 rules · AMD EPYC 9V74 80-Core Processorv1.16.0 · 2026-09-01 · 779 ms · 82 rules · AMD EPYC 9V74 80-Core Processorv1.17.0 · 2026-09-08 · 816 ms · 84 rules · AMD EPYC 9V74 80-Core Processorv1.18.0 · 2026-09-25 · 974 ms · 84 rules · AMD EPYC 9V74 80-Core Processorv1.19.0 · 2026-10-03 · 979 ms · 84 rules · AMD EPYC 9V74 80-Core Processorv1.20.0 · 2026-10-13 · 1,210 ms · 85 rules · AMD EPYC 9V74 80-Core Processorv1.21.0 · 2026-10-15 · 1,201 ms · 85 rules · AMD EPYC 9V74 80-Core Processorv1.21.1 · 2026-10-21 · 1,193 ms · 85 rules · AMD EPYC 9V74 80-Core Processorv1.22.0 · 2026-10-21 · 1,208 ms · 85 rules · AMD EPYC 9V74 80-Core Processorv1.23.0 · 2026-10-24 · 1,191 ms · 85 rules · AMD EPYC 9V74 80-Core Processorv1.24.0 · 2026-10-26 · 1,818 ms · 89 rules · AMD EPYC 9V74 80-Core Processorv1.24.1 · 2026-10-26 · 1,799 ms · 89 rules · AMD EPYC 9V74 80-Core Processor

The time grows with the rules: each release checks more, from 64 rules in v1.3.0 to 89 in v1.24.1. The releases were measured one after another on the same machine, so their times compare.

Commits on main since v1.24.1, time relative to it

Commit 1.0: as fast as the release

Time relative to the release by release and commit; the table below lists every value00.511.52026-10-28251f202 · 2026-10-28 · 0.51 × v1.24.1 (1,308 ms) · 89 rules · AMD EPYC 7763 64-Core Processor

Every push to main runs on whatever GitHub runner it gets, and their speed varies by 10 to 30% or more. So each push also measures the latest release in the same job, taking turns, and the chart shows the ratio: below 1.0 is faster than the release. The latest commit, 251f202, takes 0.51 × v1.24.1.

Allocations per scan of the latest commits, millions (BenchmarkRules)

Allocations don't depend on the machine; they are recorded for commits on main.

All values
Release or commitDateScan timeRelativeRulesCPU
v1.0.02026-05-15397 msAMD EPYC 9V74 80-Core Processor
v1.0.12026-05-17316 msAMD EPYC 9V74 80-Core Processor
v1.1.02026-05-18335 msAMD EPYC 9V74 80-Core Processor
v1.2.02026-05-23328 msAMD EPYC 9V74 80-Core Processor
v1.3.02026-05-24492 ms64AMD EPYC 9V74 80-Core Processor
v1.4.02026-05-26470 ms64AMD EPYC 9V74 80-Core Processor
v1.5.02026-06-03541 ms67AMD EPYC 9V74 80-Core Processor
v1.5.12026-06-04564 ms67AMD EPYC 9V74 80-Core Processor
v1.6.02026-06-06618 ms70AMD EPYC 9V74 80-Core Processor
v1.7.02026-06-13646 ms72AMD EPYC 9V74 80-Core Processor
v1.8.02026-06-22659 ms75AMD EPYC 9V74 80-Core Processor
v1.9.02026-07-03673 ms77AMD EPYC 9V74 80-Core Processor
v1.10.02026-07-11691 ms80AMD EPYC 9V74 80-Core Processor
v1.11.02026-07-18676 ms80AMD EPYC 9V74 80-Core Processor
v1.12.02026-07-20730 ms80AMD EPYC 9V74 80-Core Processor
v1.13.02026-07-25722 ms81AMD EPYC 9V74 80-Core Processor
v1.14.02026-08-03741 ms82AMD EPYC 9V74 80-Core Processor
v1.15.02026-08-16773 ms82AMD EPYC 9V74 80-Core Processor
v1.16.02026-09-01779 ms82AMD EPYC 9V74 80-Core Processor
v1.17.02026-09-08816 ms84AMD EPYC 9V74 80-Core Processor
v1.18.02026-09-25974 ms84AMD EPYC 9V74 80-Core Processor
v1.19.02026-10-03979 ms84AMD EPYC 9V74 80-Core Processor
v1.20.02026-10-131,210 ms85AMD EPYC 9V74 80-Core Processor
v1.21.02026-10-151,201 ms85AMD EPYC 9V74 80-Core Processor
v1.21.12026-10-211,193 ms85AMD EPYC 9V74 80-Core Processor
v1.22.02026-10-211,208 ms85AMD EPYC 9V74 80-Core Processor
v1.23.02026-10-241,191 ms85AMD EPYC 9V74 80-Core Processor
v1.24.02026-10-261,818 ms89AMD EPYC 9V74 80-Core Processor
v1.24.12026-10-261,799 ms89AMD EPYC 9V74 80-Core Processor
16e23202026-10-28946 ms89AMD EPYC 9V74 80-Core Processor
251f2022026-10-281,308 ms0.51 × v1.24.189AMD EPYC 7763 64-Core Processor

Measured by the benchmark history workflow; the records and the input are on the benchmarks branch.