I’ve been thinking about this today, and another reason it tends to browse slowly is that the browse data is kept in a linked list, and the entire database is enumerated and checked against the list.
So it’s a n! algorithm to return a browse list, which is complicated by the fact that it’s doing strcasecmp along the whole list.
I could make it log(n) by using a red/black tree to store the browse list.
I’ll add that to my “to do shortly” list.