Be more careful with allocations (by using make_shared)
Change the readonly benchmark to call size()

the iterator implementation is inefficient, and skews the
performance results unfavorably