Today worked on converting the Key data type to use ByteString.
Microbenchmarks of Keys improved, especially parsing them got 700% faster. But key parsing is not enough of an overhead in any commands I benchmarked to be a real improvement.
The new key parser is much stricter than the old one, which helps the speed. Hopefully the oddly formatted edge cases that the old parser allowed are not really in use; they include keys with fields out of the usual order, and keys with multiple values for the same field.
The next step would probably be to convert the git interface to use ByteStrings, and that plus the current groundwork is likely to lead to some real performance improvements. But I'm going to stop here with the ByteString conversion for now.