The speed with which your jobs will run will in most cases be dominated by the speed with which you can read your input data. So it is often worthwhile to try to maximize that speed.
One way to improve read performance is to use TTreeCache
, which will
predict the data that you are likely to access and preload it in big
chunks. This is mostly important when reading files over the network,
and it is virtually mandatory in case you read the files directly from
the grid (see the next section on direct access of files on the grid).
Using TTreeCache
with EventLoop is very straightforward, just
specify the size of the cache you would like for your job before
submitting it (in this case 10MB):
job.options()->setDouble (EL::Job::optCacheSize, 10*1024*1024);
The default way in which TTreeCache
predicts what data your job will
access is by looking at the first n events and assume that the pattern
will hold for the rest of your jobs. If you want to, you can change
the number of events to be read to suit your needs:
job.options()->setDouble (EL::Job::optCacheLearnEntries, 20);
You may have to play around a little to determine which number works best for you. There is a definite tradeoff, in that a too large number will mean that you read too many events without the benefit of the cache, while a too small number means that you will not be able to cache variables that you do not access on every event.