ATLAS Offline Software
Loading...
Searching...
No Matches
trigconf_string2hash.cxx File Reference
#include <chrono>
#include <iostream>
#include <thread>
#include <utility>
#include <vector>
#include "TrigConfHLTUtils/HLTUtils.h"
Include dependency graph for trigconf_string2hash.cxx:

Go to the source code of this file.

Functions

int main (int argc, char *argv[])

Function Documentation

◆ main()

int main ( int argc,
char * argv[] )

Definition at line 15 of file trigconf_string2hash.cxx.

15 {
16 if (argc <= 1 || argv[1]==std::string("-h")) {
17 std::cout << "Usage: trigconf_string2hash [IDENT] [-f FILE] [-t THREADS] [-r REPEAT]" << std::endl;
18 std::cout << " convert identifier to hash" << std::endl;
19 std::cout << " -f file with hashes produced by hashes2file" << std::endl;
20 std::cout << " -t number of threads" << std::endl;
21 std::cout << " -r number of times the file should be processed" << std::endl;
22 return 1;
23 }
24
25 // Command line parsing
26 std::string filename;
27 size_t nthreads = 0;
28 size_t N = 1;
29 for (int i=1; i<argc; ++i) {
30 if (std::string(argv[i])=="-f") {
31 filename = argv[i+1];
32 }
33 else if (std::string(argv[i])=="-t") {
34 nthreads = std::atoi(argv[i+1]);
35 }
36 else if (std::string(argv[i])=="-r") {
37 N = std::atoi(argv[i+1]);
38 }
39 }
40
41 // Convert string to hash
42 if (argc == 2) {
43 std::cout << HLTUtils::string2hash(argv[1]) << std::endl;
44 return 0;
45 }
46
47 // Performance measurement
48 auto t1 = high_resolution_clock::now();
49 if (!filename.empty()) {
50 auto run = [&]() {
51 for (size_t i=0; i<N; i++) HLTUtils::file2hashes(filename);
52 };
53 if (nthreads==0) {
54 run();
55 }
56 else {
57 std::cout << "Launching " << nthreads << " threads reading file each "
58 << N << " times" << std::endl;
59 std::vector<std::thread> threads;
60 for (size_t i = 0; i<nthreads; ++i) threads.emplace_back(run);
61 for (auto& thr : threads) thr.join();
62 }
63 }
64 auto t2 = high_resolution_clock::now();
65 std::cout << duration_cast<milliseconds>(t2 - t1).count() << " ms" << std::endl;
66
67 return 0;
68}
std::vector< ALFA_RawDataContainer_p1 > t2
std::vector< ALFA_RawDataCollection_p1 > t1
string2hash(string)
Definition HLTUtils.py:5
Definition run.py:1