From Jeffrey Morlan:
pst_build_id_ptr reads the Block BTree into a linked list, which
pst_getID does a linear scan through. For large PSTs that have
millions of blocks, this is extremely slow - almost all time is spent
in pst_getID. Since the BTree entries must be in order, this can be
dramatically improved by reading into an array and using binary
search.