Meassure IO performance
The project meassures the IO performance to serialize objects to files using several serialization methods. The following four serialization methods are compared.
- Storing the data objects in ROOTs TClonesArryas which is a branch in a TTree.
- Storing the data objects in a std::vector which is a branch in a TTree.
- Storing the data objects in a std::vector which ar part of a RNTuple model.
- Storing the data objects in a std::vector which is serialized using the Boost serialization functionality.
The common code of each binary loops over 1000000 events and creates a random number of detector points for each event. The number of events per event ranges from 10 to 30. Each DetectorPoint is created with random values.
The code is compiled since the Boost serialization can't be executed from a ROOT macro. All other three implementations can also be executed from a ROOT macro.
Compilation
The build system is implemented using CMake. To generate Makefiles one needs to execute CMake with the following parameters.
cmake -S . -B build \
-DBoost_ROOT=<Boost installation dircectory> \
-DRoot_ROOT=<ROOT installation directory>
The actual compilation afer a succesful generation is started by
cmake --build build
Execution
The generated binaries are in the subdirctor build and can be executed directly.
cd build
makeTree
To execute all binaries one can also use the following command
cmake --build build --target test
which will only show if the execution of the executable suceeds together with the runtime for the execution.