Doing most of my daily work in ROOT v5 I used to compile all macros that were doing something more than reading several histograms from a file and drawing them. It was on one hand due to performance reasons (some macros heavy on loops, fstream io, fitting, working with many objects seemed to really work 100x faster when compiled), on the other (and mainly) due to C++ - some codes were simply too complicated for CINT to interpret. This had unfortunately a side effect - when I was starting several executions of the same macro with different arguments at the same time
for i in 1 2 3 4 ; do root -b -l -q 'macro.C+("'$i'")' >& log.$i.txt & done
I would get crashes presumably because of the library being rewritten by 4 processes at the same time or maybe because ROOT was unable to decide if it needs to recompile or not.
However now with Cling in ROOT v6 it looks like that it is capable of interpreting all the macros I checked and I see no performance improvements (it might be that I didn’t hit a case of a macro which would be interpreted by CINT, but which would require ACLiC only for performance reasons). It just adds few seconds of overhead for compilation.
So at the end I started to wonder if it actually makes sense to compile macros when using Cling in ROOT v6 and if so, in what cases (apart from the obvious one when interpreter would fail to parse the macro)? The https://root.cern.ch/compiling-macros page seems to be still mainly about CINT in ROOT v5.