Rather than trying to avoid caching which is very difficult i.e. you have no idea how much is already cached, why dont you try to use the second run as your benchmark. That way you know you have a consistent result as most of the data is cached.
For some batch processes that are run once a day or so on data that are bound not to be in the buffer cache when the batch is run, we use the "flush buffer cache" feature in order to benchmark them, but note that it is only for testing purpose on a test database, as this command removes everything from the buffer cache, including data that is needed by other queries and should normally remain there. Generally you WANT cache since in-memory data is orders of magnitude quicker than on-disk data .