I wrote a Julia package (
Shrike.jl) for approximate nearest neighbor search. My algorithm draws heavily on the
mrpt algorithm and uses the same principles behind
annoy (a popular approximate nearest neighbor package by Spotify). My Julia implementation beat both of them! See the
Shrike.jl/README.md for details.
I was shocked and thrilled! I am no Julia expert, but the fact that I was able to outperform about 2000 lines of C++ in 500 lines of Julia is a real testament to the power of the language.
As a caveat, I should mention that writing
Shrike.jl wasn’t simple. I spent a lot of time learning about and testing different Julia optimizations strategies.
This is my first time making a public Julia package and I am planning to figure out how to add it to the registry. Any suggestions or feedback on the package would be appreciated. For instance, where can I leave out type annotations and not have it impact performance?