Thanks for the feedback Fred,
I had already figured out that using a parallel approach improved the performance significantly. I think I've now got 32 threads (not really played around with that number much, it was a first stab in the dark), which means no more than 4 channels handled per thread.
This has bought the times down to something like 30s for 1 day and 5min for 14days.
While I appreciate what you say about the brand|series_summary options, these were mainly added at my own request in the hope they would generally speed things up. Previously I was doing exactly what you mentioned and was caching all the brand and series info, problem was (at least in initial grabs) this was very slow due to the sheer number of queries that needed to be performed (but again I wasn't doing this in parallel so possibly some improvement could be had there).
Generally I prefer the idea of having atlas do these work for me, however I'm finding that due to the fact that publisher overlaying is not yet done (I'm having to do it client side) I think there appear to be some issues with brand/series matching that cause my EPG system some headaches and possibly if I went back to doing the brand/series caching on my side I might improve this.
But for now its just about good enough for my needs as is so I'll stick with what I've got for a bit.
Adam