I concluded a pretty simple test to measure some latencies. I connected to two providers (Infura and Quiknode) with Web3.js and subscribed to new block headers. Then I compared the time of arrival and the block timestamp in the header to calculate a latency. I got the following results (left Infura, right Quiknode):
Both of them has a pretty high latency. Is this due to their complex infrastructure, or due to the P2P nature of the blockchain? This seems too high for me, so I guess I can achieve much lower latencies by running my own node. Is this likey?
What is theoretical average latency of such a distributed network?