Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: '2'

run:
timeout: 5m
go: '1.24'
go: '1.25'

linters:
default: standard
Expand Down
45 changes: 45 additions & 0 deletions engines/benchmarks/results/benchmark_2025-11-08_16-24-33.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{"Time":"2025-11-08T16:24:51.397504-05:00","Action":"start","Package":"github.com/robbyt/go-polyscript/engines/benchmarks"}
{"Time":"2025-11-08T16:24:51.412494-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Output":"goos: darwin\n"}
{"Time":"2025-11-08T16:24:51.412561-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Output":"goarch: amd64\n"}
{"Time":"2025-11-08T16:24:51.412571-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Output":"pkg: github.com/robbyt/go-polyscript/engines/benchmarks\n"}
{"Time":"2025-11-08T16:24:51.412584-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Output":"cpu: Intel(R) Xeon(R) W-3275M CPU @ 2.50GHz\n"}
{"Time":"2025-11-08T16:24:51.4126-05:00","Action":"run","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns"}
{"Time":"2025-11-08T16:24:51.412607-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns","Output":"=== RUN BenchmarkEvaluationPatterns\n"}
{"Time":"2025-11-08T16:24:51.412618-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns","Output":"BenchmarkEvaluationPatterns\n"}
{"Time":"2025-11-08T16:24:51.412782-05:00","Action":"run","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns/SingleExecution"}
{"Time":"2025-11-08T16:24:51.412815-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns/SingleExecution","Output":"=== RUN BenchmarkEvaluationPatterns/SingleExecution\n"}
{"Time":"2025-11-08T16:24:51.412825-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns/SingleExecution","Output":"BenchmarkEvaluationPatterns/SingleExecution\n"}
{"Time":"2025-11-08T16:24:53.498921-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns/SingleExecution","Output":"BenchmarkEvaluationPatterns/SingleExecution-56 \t 5416\t 219009 ns/op\t 459874 B/op\t 1143 allocs/op\n"}
{"Time":"2025-11-08T16:24:53.499061-05:00","Action":"run","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns/CompileOnceRunMany"}
{"Time":"2025-11-08T16:24:53.499078-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns/CompileOnceRunMany","Output":"=== RUN BenchmarkEvaluationPatterns/CompileOnceRunMany\n"}
{"Time":"2025-11-08T16:24:53.499094-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns/CompileOnceRunMany","Output":"BenchmarkEvaluationPatterns/CompileOnceRunMany\n"}
{"Time":"2025-11-08T16:24:54.563835-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEvaluationPatterns/CompileOnceRunMany","Output":"BenchmarkEvaluationPatterns/CompileOnceRunMany-56 \t 8186\t 123443 ns/op\t 372585 B/op\t 449 allocs/op\n"}
{"Time":"2025-11-08T16:24:54.563935-05:00","Action":"run","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders"}
{"Time":"2025-11-08T16:24:54.563953-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders","Output":"=== RUN BenchmarkDataProviders\n"}
{"Time":"2025-11-08T16:24:54.56397-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders","Output":"BenchmarkDataProviders\n"}
{"Time":"2025-11-08T16:24:54.59761-05:00","Action":"run","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/StaticProvider"}
{"Time":"2025-11-08T16:24:54.597676-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/StaticProvider","Output":"=== RUN BenchmarkDataProviders/StaticProvider\n"}
{"Time":"2025-11-08T16:24:54.597717-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/StaticProvider","Output":"BenchmarkDataProviders/StaticProvider\n"}
{"Time":"2025-11-08T16:24:55.832357-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/StaticProvider","Output":"BenchmarkDataProviders/StaticProvider-56 \t 9570\t 126490 ns/op\t 372488 B/op\t 449 allocs/op\n"}
{"Time":"2025-11-08T16:24:55.832452-05:00","Action":"run","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/ContextProvider"}
{"Time":"2025-11-08T16:24:55.832469-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/ContextProvider","Output":"=== RUN BenchmarkDataProviders/ContextProvider\n"}
{"Time":"2025-11-08T16:24:55.83248-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/ContextProvider","Output":"BenchmarkDataProviders/ContextProvider\n"}
{"Time":"2025-11-08T16:24:58.121832-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/ContextProvider","Output":"BenchmarkDataProviders/ContextProvider-56 \t 11998\t 114601 ns/op\t 371408 B/op\t 441 allocs/op\n"}
{"Time":"2025-11-08T16:24:58.121909-05:00","Action":"run","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/CompositeProvider"}
{"Time":"2025-11-08T16:24:58.121925-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/CompositeProvider","Output":"=== RUN BenchmarkDataProviders/CompositeProvider\n"}
{"Time":"2025-11-08T16:24:58.121936-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/CompositeProvider","Output":"BenchmarkDataProviders/CompositeProvider\n"}
{"Time":"2025-11-08T16:25:00.63048-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkDataProviders/CompositeProvider","Output":"BenchmarkDataProviders/CompositeProvider-56 \t 12882\t 128400 ns/op\t 372493 B/op\t 451 allocs/op\n"}
{"Time":"2025-11-08T16:25:00.630566-05:00","Action":"run","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison"}
{"Time":"2025-11-08T16:25:00.630593-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison","Output":"=== RUN BenchmarkEngineComparison\n"}
{"Time":"2025-11-08T16:25:00.630615-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison","Output":"BenchmarkEngineComparison\n"}
{"Time":"2025-11-08T16:25:00.683376-05:00","Action":"run","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison/RisorEngine"}
{"Time":"2025-11-08T16:25:00.683415-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison/RisorEngine","Output":"=== RUN BenchmarkEngineComparison/RisorEngine\n"}
{"Time":"2025-11-08T16:25:00.683426-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison/RisorEngine","Output":"BenchmarkEngineComparison/RisorEngine\n"}
{"Time":"2025-11-08T16:25:02.919157-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison/RisorEngine","Output":"BenchmarkEngineComparison/RisorEngine-56 \t 12753\t 116162 ns/op\t 372412 B/op\t 448 allocs/op\n"}
{"Time":"2025-11-08T16:25:02.919233-05:00","Action":"run","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison/StarlarkEngine"}
{"Time":"2025-11-08T16:25:02.919272-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison/StarlarkEngine","Output":"=== RUN BenchmarkEngineComparison/StarlarkEngine\n"}
{"Time":"2025-11-08T16:25:02.919288-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison/StarlarkEngine","Output":"BenchmarkEngineComparison/StarlarkEngine\n"}
{"Time":"2025-11-08T16:25:04.429874-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Test":"BenchmarkEngineComparison/StarlarkEngine","Output":"BenchmarkEngineComparison/StarlarkEngine-56 \t 129715\t 9981 ns/op\t 7798 B/op\t 71 allocs/op\n"}
{"Time":"2025-11-08T16:25:04.430255-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Output":"PASS\n"}
{"Time":"2025-11-08T16:25:04.685318-05:00","Action":"output","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Output":"ok \tgithub.com/robbyt/go-polyscript/engines/benchmarks\t13.288s\n"}
{"Time":"2025-11-08T16:25:04.685363-05:00","Action":"pass","Package":"github.com/robbyt/go-polyscript/engines/benchmarks","Elapsed":13.288}
13 changes: 13 additions & 0 deletions engines/benchmarks/results/benchmark_2025-11-08_16-24-33.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
goos: darwin
goarch: amd64
pkg: github.com/robbyt/go-polyscript/engines/benchmarks
cpu: Intel(R) Xeon(R) W-3275M CPU @ 2.50GHz
BenchmarkEvaluationPatterns/SingleExecution-56 5330 210237 ns/op 459873 B/op 1143 allocs/op
BenchmarkEvaluationPatterns/CompileOnceRunMany-56 10648 126322 ns/op 372517 B/op 449 allocs/op
BenchmarkDataProviders/StaticProvider-56 12279 124480 ns/op 372475 B/op 449 allocs/op
BenchmarkDataProviders/ContextProvider-56 12877 118788 ns/op 371338 B/op 440 allocs/op
BenchmarkDataProviders/CompositeProvider-56 12510 111537 ns/op 372442 B/op 450 allocs/op
BenchmarkEngineComparison/RisorEngine-56 12565 111180 ns/op 372409 B/op 448 allocs/op
BenchmarkEngineComparison/StarlarkEngine-56 132204 10134 ns/op 7800 B/op 71 allocs/op
PASS
ok github.com/robbyt/go-polyscript/engines/benchmarks 15.327s
55 changes: 27 additions & 28 deletions engines/benchmarks/results/comparison.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,42 +2,41 @@ goos: darwin
goarch: amd64
pkg: github.com/robbyt/go-polyscript/engines/benchmarks
cpu: Intel(R) Xeon(R) W-3275M CPU @ 2.50GHz
│ previous │ current │
│ sec/op │ sec/op vs base │
EvaluationPatterns/SingleExecution-56 273.5µ ± ∞ ¹ 284.7µ ± ∞ ¹ ~ (p=1.000 n=1) ²
EvaluationPatterns/CompileOnceRunMany-56 172.6µ ± ∞ ¹ 176.1µ ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/StaticProvider-56 176.8µ ± ∞ ¹ 180.6µ ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/ContextProvider-56 172.6µ ± ∞ ¹ 178.5µ ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/CompositeProvider-56 178.8µ ± ∞ ¹ 177.7µ ± ∞ ¹ ~ (p=1.000 n=1) ²
VMComparison/RisorEngine-56 171.0µ ± ∞ ¹ 183.4µ ± ∞ ¹ ~ (p=1.000 n=1) ²
VMComparison/StarlarkEngine-56 11.85µ ± ∞ ¹ 12.49µ ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 126.6µ 130.9µ +3.37%
│ previous │ current │
│ sec/op │ sec/op vs base
EvaluationPatterns/SingleExecution-56 284.7µ ± ∞ ¹ 210.2µ ± ∞ ¹ ~ (p=1.000 n=1) ²
EvaluationPatterns/CompileOnceRunMany-56 176.1µ ± ∞ ¹ 126.3µ ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/StaticProvider-56 180.6µ ± ∞ ¹ 124.5µ ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/ContextProvider-56 178.5µ ± ∞ ¹ 118.8µ ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/CompositeProvider-56 177.7µ ± ∞ ¹ 111.5µ ± ∞ ¹ ~ (p=1.000 n=1) ²
EngineComparison/RisorEngine-56 183.4µ ± ∞ ¹ 111.2µ ± ∞ ¹ ~ (p=1.000 n=1) ²
EngineComparison/StarlarkEngine-56 12.49µ ± ∞ ¹ 10.13µ ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 130.9µ 90.40µ -30.93%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05

│ previous │ current │
│ B/op │ B/op vs base │
EvaluationPatterns/SingleExecution-56 450.3Ki ± ∞ ¹ 450.3Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
EvaluationPatterns/CompileOnceRunMany-56 365.0Ki ± ∞ ¹ 365.1Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/StaticProvider-56 365.1Ki ± ∞ ¹ 365.1Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/ContextProvider-56 364.0Ki ± ∞ ¹ 364.0Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/CompositeProvider-56 365.6Ki ± ∞ ¹ 365.1Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
VMComparison/RisorEngine-56 365.1Ki ± ∞ ¹ 365.1Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
VMComparison/StarlarkEngine-56 7.596Ki ± ∞ ¹ 7.591Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 216.3Ki 216.2Ki -0.02%
EvaluationPatterns/SingleExecution-56 450.3Ki ± ∞ ¹ 449.1Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
EvaluationPatterns/CompileOnceRunMany-56 365.1Ki ± ∞ ¹ 363.8Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/StaticProvider-56 365.1Ki ± ∞ ¹ 363.7Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/ContextProvider-56 364.0Ki ± ∞ ¹ 362.6Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/CompositeProvider-56 365.1Ki ± ∞ ¹ 363.7Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
EngineComparison/RisorEngine-56 365.1Ki ± ∞ ¹ 363.7Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
EngineComparison/StarlarkEngine-56 7.591Ki ± ∞ ¹ 7.617Ki ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 216.2Ki 215.7Ki -0.25%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05

│ previous │ current │
│ allocs/op │ allocs/op vs base │
EvaluationPatterns/SingleExecution-56 1.164k ± ∞ ¹ 1.164k ± ∞ ¹ ~ (p=1.000 n=1) ²
EvaluationPatterns/CompileOnceRunMany-56 439.0 ± ∞ ¹ 439.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/StaticProvider-56 439.0 ± ∞ ¹ 439.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/ContextProvider-56 431.0 ± ∞ ¹ 431.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/CompositeProvider-56 448.0 ± ∞ ¹ 441.0 ± ∞ ¹ ~ (p=1.000 n=1) ³
VMComparison/RisorEngine-56 439.0 ± ∞ ¹ 439.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
VMComparison/StarlarkEngine-56 72.00 ± ∞ ¹ 72.00 ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 389.9 389.0 -0.22%
EvaluationPatterns/SingleExecution-56 1.164k ± ∞ ¹ 1.143k ± ∞ ¹ ~ (p=1.000 n=1) ²
EvaluationPatterns/CompileOnceRunMany-56 439.0 ± ∞ ¹ 449.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/StaticProvider-56 439.0 ± ∞ ¹ 449.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/ContextProvider-56 431.0 ± ∞ ¹ 440.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
DataProviders/CompositeProvider-56 441.0 ± ∞ ¹ 450.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
EngineComparison/RisorEngine-56 439.0 ± ∞ ¹ 448.0 ± ∞ ¹ ~ (p=1.000 n=1) ²
EngineComparison/StarlarkEngine-56 72.00 ± ∞ ¹ 71.00 ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 389.0 393.1 +1.06%
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ need >= 4 samples to detect a difference at alpha level 0.05
² need >= 4 samples to detect a difference at alpha level 0.05
2 changes: 1 addition & 1 deletion engines/benchmarks/results/latest.txt
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/robbyt/go-polyscript

go 1.25.3
go 1.25.4

require (
github.com/extism/go-sdk v1.7.1
Expand Down
Loading