The link provided by Rinzwind titled Why is [find] running incredible fast, if run twice? and What is “cached” in the top command? cover the same issue.
Essentially, if free RAM is available, the kernel can use part of it to cache information. The memory used in this way can be made available to applications on demand.
Linux ate my RAM explains terms such as available, buffer, free, and used. It also provides the following command to clear "most of the disk cache":
echo 3 | sudo tee /proc/sys/vm/drop_caches
To confirm that find is quicker the second time around, I ran time find ~ for the first time:
real 0m10.765s
user 0m0.395s
sys 0m1.169s
And a second time to see the beneficial effect of memory caching:
real 0m1.119s
user 0m0.196s
sys 0m0.476s
Then I cleared cache with echo 3 | sudo tee /proc/sys/vm/drop_caches and ran time find ~ again. Sure enough, the time was high again:
real 0m19.198s
user 0m0.457s
sys 0m1.425s
But, because of fresh caching, a run of find subsequently and expectedly, showed an improved time:
real 0m1.100s
user 0m0.199s
sys 0m0.484s
While reading about cache, I came across Caching/preloading files on Linux into RAM and a couple of answers suggested vmtouch - the Virtual Memory Toucher: it is described as a "Portable file system cache diagnostics and control" and is in the repos for Bionic and later.