git-annex uses FilePath (String) extensively. That's a slow data type. Converting to ByteString, and RawFilePath, should speed it up significantly, according to profiling.

I've made a test branch, bs, to see what kind of performance improvement to expect.

Benchmarking git-annex find, speedups range from 28-66%. The files fly by much more snappily. Other commands likely also speed up, but do more work than find so the improvement is not as large.

The bs branch is in a mergeable state now. done

Stuff not entirely finished:

  • Profile various commands and look for hot spots involving conversion between RawFilePath and FilePath.