When warming up SharePoint in the morning do you need to hit subwebs or just the root site collection(s)?
Nope you don't need to include sub-webs and also you don't need to include all of web applications as long as they are sharing same application pool.
I went through hundred of discussion's ages ago when I was developing a timer job, but I couldn't find what exactly was the reason behind slow performance but triggering root site collection solved issues with my production server, so my answer is based on experience not discussions, there ain't any written evidence I could find so far either.
However if your farm got thousands of sites, would you going to create a timer job which will call them all ?
We are using the famous warm up script from codeplex:
It helps a lot and you can specify whatever you want to wake up / warm up.
Give it a try!