#if !defined( __CINT__) || defined(__MAKECINT__)
#include <iostream>
#include "AliTRDcalibDB.h"
#include "AliCDBManager.h"
#include <TStopwatch.h>
#include <TRandom.h>
extern TRandom* gRandom;
#endif
#define BENCHMARK(code, comment) \
timer.Reset(); timer.Start(); \
for (Int_t i=0; i<NUMBER; ++i) { \
code \
} \
timer.Stop(); \
cerr << "Tested " << NUMBER << " times: " << comment << ". Time/call: " << timer.CpuTime() / NUMBER << endl; \
timer.Print();
#define NUMBER 100000
void AliTRDbenchmarkCalibDB()
{
TStopwatch timer;
AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
AliTRDcalibDB* calib = AliTRDcalibDB::Instance();
if (!calib)
{
cerr << "calibDB singleton has already been terminated." << endl;
return;
}
Float_t xyz[3];
calib->SetRun(1);
calib->SetRun(0);
calib->GetNumberOfTimeBins();
BENCHMARK(calib->GetNumberOfTimeBins();, "GetNumberOfTimeBins");
BENCHMARK(calib->GetChamberPos(1, xyz);, "GetChamberPos");
BENCHMARK(calib->GetVdrift((Int_t) (gRandom->Uniform() * 500), (Int_t) (gRandom->Uniform() * 100), (Int_t) (gRandom->Uniform() * 10));, "GetVdrift");
#undef NUMBER
#define NUMBER 10000
BENCHMARK(calib->SetRun(1); calib->SetRun(0); calib->GetNumberOfTimeBins();, "GetNumberOfTimeBins with invalidating");
BENCHMARK(calib->SetRun(1); calib->SetRun(0); calib->GetChamberPos(1, xyz);, "GetChamberPos with invalidating");
#undef NUMBER
#define NUMBER 200
BENCHMARK(calib->SetRun(1); calib->SetRun(0); calib->GetVdrift(1, 1, 1);, "GetVdrift with invalidating");
AliTRDcalibDB::Terminate();
}
AliTRDbenchmarkCalibDB.C:1 AliTRDbenchmarkCalibDB.C:2 AliTRDbenchmarkCalibDB.C:3 AliTRDbenchmarkCalibDB.C:4 AliTRDbenchmarkCalibDB.C:5 AliTRDbenchmarkCalibDB.C:6 AliTRDbenchmarkCalibDB.C:7 AliTRDbenchmarkCalibDB.C:8 AliTRDbenchmarkCalibDB.C:9 AliTRDbenchmarkCalibDB.C:10 AliTRDbenchmarkCalibDB.C:11 AliTRDbenchmarkCalibDB.C:12 AliTRDbenchmarkCalibDB.C:13 AliTRDbenchmarkCalibDB.C:14 AliTRDbenchmarkCalibDB.C:15 AliTRDbenchmarkCalibDB.C:16 AliTRDbenchmarkCalibDB.C:17 AliTRDbenchmarkCalibDB.C:18 AliTRDbenchmarkCalibDB.C:19 AliTRDbenchmarkCalibDB.C:20 AliTRDbenchmarkCalibDB.C:21 AliTRDbenchmarkCalibDB.C:22 AliTRDbenchmarkCalibDB.C:23 AliTRDbenchmarkCalibDB.C:24 AliTRDbenchmarkCalibDB.C:25 AliTRDbenchmarkCalibDB.C:26 AliTRDbenchmarkCalibDB.C:27 AliTRDbenchmarkCalibDB.C:28 AliTRDbenchmarkCalibDB.C:29 AliTRDbenchmarkCalibDB.C:30 AliTRDbenchmarkCalibDB.C:31 AliTRDbenchmarkCalibDB.C:32 AliTRDbenchmarkCalibDB.C:33 AliTRDbenchmarkCalibDB.C:34 AliTRDbenchmarkCalibDB.C:35 AliTRDbenchmarkCalibDB.C:36 AliTRDbenchmarkCalibDB.C:37 AliTRDbenchmarkCalibDB.C:38 AliTRDbenchmarkCalibDB.C:39 AliTRDbenchmarkCalibDB.C:40 AliTRDbenchmarkCalibDB.C:41 AliTRDbenchmarkCalibDB.C:42 AliTRDbenchmarkCalibDB.C:43 AliTRDbenchmarkCalibDB.C:44 AliTRDbenchmarkCalibDB.C:45 AliTRDbenchmarkCalibDB.C:46 AliTRDbenchmarkCalibDB.C:47 AliTRDbenchmarkCalibDB.C:48 AliTRDbenchmarkCalibDB.C:49 AliTRDbenchmarkCalibDB.C:50 AliTRDbenchmarkCalibDB.C:51 AliTRDbenchmarkCalibDB.C:52 AliTRDbenchmarkCalibDB.C:53 AliTRDbenchmarkCalibDB.C:54 AliTRDbenchmarkCalibDB.C:55 AliTRDbenchmarkCalibDB.C:56