Skip to content

fix: fix several type-instabilities in codegen#862

Merged
AayushSabharwal merged 5 commits intomasterfrom
as/faster-codegen
Feb 23, 2026
Merged

fix: fix several type-instabilities in codegen#862
AayushSabharwal merged 5 commits intomasterfrom
as/faster-codegen

Conversation

@AayushSabharwal
Copy link
Member

No description provided.

@github-actions
Copy link
Contributor

github-actions bot commented Feb 19, 2026

Benchmark Results (Julia vlts)

Time benchmarks
master ab0226b... master / ab0226b...
arithmetic/2-arg mul 12.1 ± 0.24 μs 12.4 ± 0.28 μs 0.975 ± 0.029
arithmetic/addition 0.0748 ± 0.00098 ms 0.077 ± 0.0011 ms 0.971 ± 0.019
arithmetic/division 23.6 ± 0.47 μs 24 ± 0.45 μs 0.984 ± 0.027
arithmetic/multiplication 0.0576 ± 0.0022 ms 0.0581 ± 0.0016 ms 0.991 ± 0.047
overhead/acrule/a+2 2.33 ± 0.12 μs 2.26 ± 0.1 μs 1.03 ± 0.069
overhead/acrule/a+2+b 0.063 ± 0.001 μs 0.063 ± 0.001 μs 1 ± 0.022
overhead/acrule/a+b 3.89 ± 0.2 μs 3.83 ± 0.11 μs 1.02 ± 0.06
overhead/acrule/noop:Int 0.04 ± 0.001 μs 0.04 ± 0.001 μs 1 ± 0.035
overhead/acrule/noop:Sym 0.048 ± 0.001 μs 0.05 ± 0.001 μs 0.96 ± 0.028
overhead/get_degrees/large_poly 0.081 ± 0.003 μs 0.083 ± 0.004 μs 0.976 ± 0.059
overhead/rule/noop:Int 0.06 ± 0.002 μs 0.06 ± 0.002 μs 1 ± 0.047
overhead/rule/noop:Sym 0.058 ± 0.002 μs 0.06 ± 0.002 μs 0.967 ± 0.046
overhead/rule/noop:Term 0.059 ± 0.002 μs 0.06 ± 0.002 μs 0.983 ± 0.047
overhead/ruleset/noop:Int 18 ± 1 ns 19 ± 1 ns 0.947 ± 0.073
overhead/ruleset/noop:Sym 0.268 ± 0.008 μs 0.272 ± 0.009 μs 0.985 ± 0.044
overhead/ruleset/noop:Term 1.25 ± 0.03 μs 1.26 ± 0.031 μs 0.997 ± 0.034
overhead/simplify/noop:Int 19 ± 1 ns 19 ± 1 ns 1 ± 0.074
overhead/simplify/noop:Sym 27 ± 2 ns 26 ± 2 ns 1.04 ± 0.11
overhead/simplify/noop:Term 26.2 ± 0.83 μs 25.8 ± 1 μs 1.02 ± 0.051
overhead/simplify/randterm (+, *):serial 0.225 ± 0.0018 s 0.227 ± 0.0021 s 0.988 ± 0.012
overhead/simplify/randterm (+, *):thread 0.258 ± 0.012 s 0.267 ± 0.0096 s 0.964 ± 0.057
overhead/simplify/randterm (/, *):serial 0.0786 ± 0.0027 ms 0.0778 ± 0.0022 ms 1.01 ± 0.045
overhead/simplify/randterm (/, *):thread 0.082 ± 0.0023 ms 0.0812 ± 0.0026 ms 1.01 ± 0.043
overhead/substitute/a 0.0366 ± 0.00052 ms 0.0376 ± 0.00062 ms 0.973 ± 0.021
overhead/substitute/a,b 0.0444 ± 0.00064 ms 0.0449 ± 0.00071 ms 0.988 ± 0.021
overhead/substitute/a,b,c 0.042 ± 0.00054 ms 0.0409 ± 0.00063 ms 1.03 ± 0.021
polyform/easy_iszero 21.5 ± 0.34 μs 21.7 ± 0.36 μs 0.99 ± 0.023
polyform/isone 0.96 ± 0.03 ms 0.966 ± 0.027 ms 0.994 ± 0.042
polyform/isone:noop 0.09 ± 0.024 μs 0.083 ± 0.003 μs 1.08 ± 0.29
polyform/iszero 0.805 ± 0.024 ms 0.811 ± 0.024 ms 0.993 ± 0.041
polyform/iszero:noop 0.087 ± 0.002 μs 0.083 ± 0.003 μs 1.05 ± 0.045
polyform/simplify_fractions 1.04 ± 0.029 ms 1.05 ± 0.028 ms 0.993 ± 0.038
printing/large_poly 0.217 ± 0.0018 s 0.22 ± 0.0017 s 0.983 ± 0.011
time_to_load 1.28 ± 0.014 s 1.27 ± 0.0019 s 1.01 ± 0.011
Memory benchmarks
master ab0226b... master / ab0226b...
arithmetic/2-arg mul 0.078 k allocs: 2.72 kB 0.078 k allocs: 2.72 kB 1
arithmetic/addition 0.438 k allocs: 16 kB 0.438 k allocs: 16 kB 1
arithmetic/division 0.142 k allocs: 5.47 kB 0.142 k allocs: 5.47 kB 1
arithmetic/multiplication 0.356 k allocs: 11.7 kB 0.356 k allocs: 11.7 kB 1
overhead/acrule/a+2 0.034 k allocs: 1.25 kB 0.034 k allocs: 1.25 kB 1
overhead/acrule/a+2+b 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/a+b 0.047 k allocs: 1.8 kB 0.047 k allocs: 1.8 kB 1
overhead/acrule/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/get_degrees/large_poly 2 allocs: 32 B 2 allocs: 32 B 1
overhead/rule/noop:Int 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Sym 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Term 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/ruleset/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/ruleset/noop:Sym 3 allocs: 0.109 kB 3 allocs: 0.109 kB 1
overhead/ruleset/noop:Term 12 allocs: 0.391 kB 12 allocs: 0.391 kB 1
overhead/simplify/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Term 0.298 k allocs: 11.6 kB 0.298 k allocs: 11.6 kB 1
overhead/simplify/randterm (+, *):serial 2.31 M allocs: 0.0884 GB 2.31 M allocs: 0.0883 GB 1
overhead/simplify/randterm (+, *):thread 2.35 M allocs: 0.246 GB 2.35 M allocs: 0.246 GB 1
overhead/simplify/randterm (/, *):serial 0.844 k allocs: 30.4 kB 0.844 k allocs: 30.4 kB 1
overhead/simplify/randterm (/, *):thread 0.879 k allocs: 31.5 kB 0.879 k allocs: 31.5 kB 1
overhead/substitute/a 0.22 k allocs: 8.42 kB 0.22 k allocs: 8.42 kB 1
overhead/substitute/a,b 0.267 k allocs: 10.1 kB 0.267 k allocs: 10.1 kB 1
overhead/substitute/a,b,c 0.238 k allocs: 8.62 kB 0.238 k allocs: 8.62 kB 1
polyform/easy_iszero 0.133 k allocs: 4.58 kB 0.133 k allocs: 4.58 kB 1
polyform/isone 8.34 k allocs: 0.567 MB 8.34 k allocs: 0.567 MB 1
polyform/isone:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/iszero 6.87 k allocs: 0.467 MB 6.87 k allocs: 0.467 MB 1
polyform/iszero:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/simplify_fractions 8.82 k allocs: 0.59 MB 8.82 k allocs: 0.59 MB 1
printing/large_poly 1.86 M allocs: 0.082 GB 1.86 M allocs: 0.082 GB 1
time_to_load 0.153 k allocs: 14.5 kB 0.153 k allocs: 14.5 kB 1

@github-actions
Copy link
Contributor

github-actions bot commented Feb 19, 2026

Benchmark Results (Julia v1)

Time benchmarks
master ab0226b... master / ab0226b...
arithmetic/2-arg mul 10.6 ± 0.26 μs 10.3 ± 0.24 μs 1.03 ± 0.035
arithmetic/addition 0.0668 ± 0.00088 ms 0.0668 ± 0.00069 ms 1 ± 0.017
arithmetic/division 24.8 ± 0.59 μs 24.7 ± 0.76 μs 1 ± 0.039
arithmetic/multiplication 0.0523 ± 0.002 ms 0.0504 ± 0.002 ms 1.04 ± 0.057
overhead/acrule/a+2 2.16 ± 0.05 μs 2.19 ± 0.041 μs 0.986 ± 0.029
overhead/acrule/a+2+b 0.09 ± 0.01 μs 0.08 ± 0.001 μs 1.12 ± 0.13
overhead/acrule/a+b 3.73 ± 0.069 μs 3.75 ± 0.06 μs 0.995 ± 0.024
overhead/acrule/noop:Int 30 ± 0 ns 30 ± 0 ns 1 ± 0
overhead/acrule/noop:Sym 0.07 ± 0.001 μs 0.07 ± 0.01 μs 1 ± 0.14
overhead/get_degrees/large_poly 0.09 ± 0.01 μs 0.08 ± 0.001 μs 1.12 ± 0.13
overhead/rule/noop:Int 0.07 ± 0.01 μs 0.061 ± 0.01 μs 1.15 ± 0.25
overhead/rule/noop:Sym 0.08 ± 0.01 μs 0.07 ± 0 μs 1.14 ± 0.14
overhead/rule/noop:Term 0.08 ± 0.01 μs 0.07 ± 0 μs 1.14 ± 0.14
overhead/ruleset/noop:Int 30 ± 0 ns 30 ± 0 ns 1 ± 0
overhead/ruleset/noop:Sym 0.32 ± 0.01 μs 0.311 ± 0.001 μs 1.03 ± 0.032
overhead/ruleset/noop:Term 1.16 ± 0.03 μs 1.18 ± 0.011 μs 0.982 ± 0.027
overhead/simplify/noop:Int 30 ± 0 ns 30 ± 0 ns 1 ± 0
overhead/simplify/noop:Sym 30 ± 10 ns 30 ± 10 ns 1 ± 0.47
overhead/simplify/noop:Term 26.6 ± 0.58 μs 26.7 ± 0.55 μs 0.994 ± 0.03
overhead/simplify/randterm (+, *):serial 0.193 ± 0.026 s 0.197 ± 0.024 s 0.978 ± 0.18
overhead/simplify/randterm (+, *):thread 0.261 ± 0.049 s 0.235 ± 0.039 s 1.11 ± 0.28
overhead/simplify/randterm (/, *):serial 0.0848 ± 0.0033 ms 0.0865 ± 0.0031 ms 0.98 ± 0.051
overhead/simplify/randterm (/, *):thread 0.0943 ± 0.0084 ms 0.0965 ± 0.0083 ms 0.977 ± 0.12
overhead/substitute/a 0.0332 ± 0.00067 ms 0.0334 ± 0.00077 ms 0.994 ± 0.031
overhead/substitute/a,b 0.0414 ± 0.00089 ms 0.041 ± 0.00083 ms 1.01 ± 0.03
overhead/substitute/a,b,c 0.0403 ± 0.00089 ms 0.0394 ± 0.00086 ms 1.02 ± 0.032
polyform/easy_iszero 18.8 ± 0.41 μs 18.3 ± 0.38 μs 1.03 ± 0.031
polyform/isone 0.915 ± 0.023 ms 0.912 ± 0.015 ms 1 ± 0.03
polyform/isone:noop 0.08 ± 0.01 μs 0.08 ± 0 μs 1 ± 0.12
polyform/iszero 0.787 ± 0.016 ms 0.794 ± 0.018 ms 0.992 ± 0.03
polyform/iszero:noop 0.08 ± 0.001 μs 0.09 ± 0.01 μs 0.889 ± 0.099
polyform/simplify_fractions 0.985 ± 0.049 ms 0.985 ± 0.03 ms 1 ± 0.059
printing/large_poly 0.189 ± 0.017 s 0.181 ± 0.015 s 1.04 ± 0.13
time_to_load 1.37 ± 0.0041 s 1.37 ± 0.023 s 1 ± 0.017
Memory benchmarks
master ab0226b... master / ab0226b...
arithmetic/2-arg mul 0.056 k allocs: 1.78 kB 0.056 k allocs: 1.78 kB 1
arithmetic/addition 0.3 k allocs: 10.3 kB 0.3 k allocs: 10.3 kB 1
arithmetic/division 0.132 k allocs: 4.77 kB 0.132 k allocs: 4.77 kB 1
arithmetic/multiplication 0.252 k allocs: 6.5 kB 0.252 k allocs: 6.5 kB 1
overhead/acrule/a+2 0.034 k allocs: 1.12 kB 0.034 k allocs: 1.12 kB 1
overhead/acrule/a+2+b 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/a+b 0.046 k allocs: 1.55 kB 0.046 k allocs: 1.55 kB 1
overhead/acrule/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/get_degrees/large_poly 2 allocs: 32 B 2 allocs: 32 B 1
overhead/rule/noop:Int 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Sym 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Term 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/ruleset/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/ruleset/noop:Sym 3 allocs: 0.109 kB 3 allocs: 0.109 kB 1
overhead/ruleset/noop:Term 12 allocs: 0.391 kB 12 allocs: 0.391 kB 1
overhead/simplify/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Term 0.284 k allocs: 10 kB 0.284 k allocs: 10 kB 1
overhead/simplify/randterm (+, *):serial 2.16 M allocs: 0.0755 GB 2.16 M allocs: 0.0755 GB 1
overhead/simplify/randterm (+, *):thread 2.32 M allocs: 0.237 GB 2.33 M allocs: 0.237 GB 1
overhead/simplify/randterm (/, *):serial 0.783 k allocs: 28.2 kB 0.783 k allocs: 28.2 kB 1
overhead/simplify/randterm (/, *):thread 0.918 k allocs: 0.0325 MB 0.918 k allocs: 0.0325 MB 1
overhead/substitute/a 0.172 k allocs: 6.05 kB 0.172 k allocs: 6.05 kB 1
overhead/substitute/a,b 0.223 k allocs: 7.69 kB 0.223 k allocs: 7.69 kB 1
overhead/substitute/a,b,c 0.229 k allocs: 7.81 kB 0.229 k allocs: 7.81 kB 1
polyform/easy_iszero 0.092 k allocs: 2.94 kB 0.092 k allocs: 2.94 kB 1
polyform/isone 10.9 k allocs: 0.579 MB 10.9 k allocs: 0.579 MB 1
polyform/isone:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/iszero 8.97 k allocs: 0.48 MB 8.97 k allocs: 0.48 MB 1
polyform/iszero:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/simplify_fractions 11.4 k allocs: 0.596 MB 11.4 k allocs: 0.596 MB 1
printing/large_poly 2.15 M allocs: 0.079 GB 2.15 M allocs: 0.079 GB 1
time_to_load 0.145 k allocs: 11 kB 0.145 k allocs: 11 kB 1

@AayushSabharwal AayushSabharwal force-pushed the as/faster-codegen branch 4 times, most recently from 3dad61b to 86cd5e7 Compare February 20, 2026 12:36
@AayushSabharwal AayushSabharwal merged commit efcbb4f into master Feb 23, 2026
25 of 37 checks passed
@AayushSabharwal AayushSabharwal deleted the as/faster-codegen branch February 23, 2026 07:01
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