Not ready for review, just posting this to keep track of benchmarks.
I'm done with Julia-based optimizations for now. There are some other optimizations White describes in Ch7 that I would like to do but that would be in a future PR.
Remaining tasks for this PR
Reduce matrix size by excluding identity submatrix from the enumeration
Make new approach multithreaded
Benchmarks
The benchmarks here use the code in benchmarks/weight_dist_bench.jl
n=70
k=35
Code used is the code of largest distance that is known for [n, k]
Nov 18 Benchmarks (1 thread)
Old approach which uses matrix mulitiplies
Time ~ 3.7s
Memory ~ 62 MiB
New approach
Time ~ 10.7 ms Time ~ 335ms [Edit: earlier today posted 10.7 ms but there was a mistake because of a line of code Id left in that was meant for Zimmerman's algorithm, not for Brouwer's.]
Memory ~ 480 KiB
So new approach is about 11 times faster [updated].
Not ready for review, just posting this to keep track of benchmarks.
I'm done with Julia-based optimizations for now. There are some other optimizations White describes in Ch7 that I would like to do but that would be in a future PR.
Remaining tasks for this PR Reduce matrix size by excluding identity submatrix from the enumeration Make new approach multithreaded
Benchmarks The benchmarks here use the code in
benchmarks/weight_dist_bench.jl
n=70 k=35 Code used is the code of largest distance that is known for [n, k]Nov 18 Benchmarks (1 thread) Old approach which uses matrix mulitiplies Time ~ 3.7s Memory ~ 62 MiB
New approach
Time ~ 10.7 msTime ~ 335ms [Edit: earlier today posted 10.7 ms but there was a mistake because of a line of code Id left in that was meant for Zimmerman's algorithm, not for Brouwer's.] Memory ~ 480 KiBSo new approach is about 11 times faster [updated].