Now that we have #851 (Improve detection of cyclic axes), I realise that we no longer need to run cf.Field.autocyclic during cf.Field.set_construct, because autocyclic will get end up being run anyway, if required, whenever cf.Field.cyclic() is called.
This doesn't change any functionality, but will speed up the reading of remote datasets. Currently, even if you set cache=False to cf.read, set_construct ends up accessing the cyclic axis bounds values from the dataset, which can be slow.
Pushing the overhead of autocyclic to when cyclicity is actually needed makes sense because i) you may well not need that information in your workflow and ii) the overhead of the operation will likely make the autocyclic overhead not seem so bad.
Note that once autocyclic has been run once, it caches the values it need from disk, so is faster the next time.
Now that we have #851 (Improve detection of cyclic axes), I realise that we no longer need to run
cf.Field.autocyclicduringcf.Field.set_construct, becauseautocyclicwill get end up being run anyway, if required, whenevercf.Field.cyclic()is called.This doesn't change any functionality, but will speed up the reading of remote datasets. Currently, even if you set
cache=Falsetocf.read,set_constructends up accessing the cyclic axis bounds values from the dataset, which can be slow.Pushing the overhead of
autocyclicto when cyclicity is actually needed makes sense because i) you may well not need that information in your workflow and ii) the overhead of the operation will likely make theautocyclicoverhead not seem so bad.Note that once
autocyclichas been run once, it caches the values it need from disk, so is faster the next time.