Although hash lookups are O(1), there is still a large amount of constant overhead, whereas struct access can be done in a single load operation.