Skip to content

Eliminate the deserialisation of the PCMs due to lookups aiming to know if a class inherits from TObject #14234

Open
@dpiparo

Description

Explain what you would like to see improved and how.

Studies showed that interpreter lookups for classes like TNamed take place for example at ROOT startup, causing the deserialisation of parts of the PCH. Even if ROOT moved to PCMs, deserialisation of the persistified AST happens, even if more granular in a sense.

Such lookups are triggered by requests to our type system, i.e. TClass, which aim to provide information about inheritance from TObject of classes such as TNamed .
The core libraries of ROOT are indeed special: their root pcms are empty. All the reflection information, including IO annotations, come from the AST.

This performance penalty could be eliminated, by adding to the newly created TClass instances the status bits which are stored by rootcling in the dictionaries themselves.

Alternatively, a way in which the problem might be mitigated is to provide regular root-pcms also for libraries relying on the PCMs. The question here is about the cost of opening a root file and putting at disposal of the type system the TProtoClass instances or the cost of deserialising pieces of the PCM with the granularity of a Decl.

See https://sft.its.cern.ch/jira/browse/ROOT-9355 for more info.

ROOT version

All

Installation method

all

Operating system

all

Additional context

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions