Hi folks!
I was thinking about JuliaCon 2025 Hackathon ideas for this Saturday! Figured I would start a general Discourse post so everyone can post and peruse ideas. Feel free to share ideas below!
~ tcp
3 Likes
How about writing an initial JVM that runs HelloWorld.class?
free perf improvement clout
opened 06:37PM - 31 Aug 18 UTC
performance
arrays
good first issue
```
julia> using BenchmarkTools
julia> a=BitVector(rand(Bool,1<<10)); b=copy(a… );
julia> @btime ==($a,$b)
13.865 ns (0 allocations: 0 bytes)
true
julia> @btime <($a,$b)
2.252 μs (0 allocations: 0 bytes)
false
julia> versioninfo()
Julia Version 1.0.0
Commit 5d4eaca0c9 (2018-08-08 20:58 UTC)
```
The immediate problem is that lexicographic comparison falls back to `AbstractArray`. However, it is not clear how to write a fast (chunk-wise) comparison with the current layout, because the most significant bit of the bitvector (wrt julia's convention for vector comparison) is stored in the least significant bit of the unterlying UInt64 (wrt hardware integer comparison convention). See:
```
julia> a=BitVector(rand(Bool,1<<6));
julia> a
64-element BitArray{1}:
true
true
false
false
true
⋮
true
false
true
false
julia> bitstring(a.chunks[1])
"0101011000101101010100010100000110100011100101000000101011110011"
```
I'd propose to switch the layout of `BitVector` to match the machine convention. Then, one would need to also replace `trailing_zeros` by `leading_zeros` for iterations, but this has just as good hardware support. Or is there a strong reason for the current layout?
Hardware Hacking
Oh I should mention that I brought all the hardware for this with me!
If you want to hack on this, just reach out! And if you want to borrow the machinery while we are here, happy to lend it to you as well – just get it back to me in time for the Hackathon!
1 Like