DataObjID: on-demand lookup of className
Retrieving the class name to a CLID requires querying the ClassIDSvc, which (at least in the ATLAS implementation) requires taking a lock during the lookup and in general might be a costly operation. Instead of doing this in the construction of DataObjID only lookup the class name when needed and then cache the result. For many use-cases, the class name will never be retrieved.
Also cleanup the needlessly complicated code of one-time retrieval of ClassIDSvc by using a simple static and add a unit test.
This speeds up construction of DataObjID (for the ATLAS use-case) by about 10% for a single threaded-job. But seeing a factor of 15-20 speedup for synthetic heavily thread contented job using 8 threads (see also ATEAM-1054).
Edited by Frank Winklmeier