The postgres query optimizer will try to minimize the number of pages read from disk (and the number of intermediate pages written to disk). Benchmarking the query optimizer by making the shared buffers large enough to hold all the data therefore seems wrong, as you're then measuring the speed of the query optimizer and the join processor, instead of the quality of the generated query plans. It would not surprise me if the generated plans for these versions are actually all the same and this is only measuring execution speed.
The problem of dangerous interactions between drivers and cyclists is much smaller here in the Netherlands, mainly due to two reasons.
The first reason is the infrastructure, both visible and invisible. Separated bicycle lanes are commonplace and in the few places where they intersect with car traffic, care is taken to make crossing safe and comfortable. This visible infrastructure is complemented by the concept of "Hoofdnetten", where the default routes to some place for different modes of transportation coincide for the least amount of time/space. For example, going somewhere by bike might take you through a residential neighborhood with barely any traffic, which is also slowed by speed bumps and narrowed streets, whereas buses will use a bus lane taking a slightly longer route, and car traffic has to go all the way around.
The second reason is that here, everyone is a cyclist. Going for groceries? Five minute bike ride, much easier and quicker than going by car. Kids cycle to school alone from a young age. Going out for drinks? Bike.
Because everyone is a cyclist and there are cyclists everywhere, cyclists are equal participants in traffic and are treated with care and respect.
It depends. For operations or aggregates on a single field, it improves cache locality, whereas if operations act on all, or most, fields of the struct, it hurts cache locality. The exact same tradeoff differentiates OLTP (transactional/row stored) databases and OLAP (analytics/column stored) databases.