Your test and results look good, what kind of m/c you have used to test this.
I ran it on my Macbook Pro, so nothing fancy. The code was compiled with simple ./confgure and with no special flags. The only non-default setting was shared_buffers = 512MB to ensure the table/index fits in memory.
Let me see if I or one of my colleague can do this and similar test on some high-end m/c.
Sure. That'll be helpful given a slight unexpected result. May be it's just a noise or we may see different result on a high end m/c.