29int main(
int argc,
char** argv ) {
34 std::cerr <<
"usage: " << argv[0] <<
" <test-file>" << std::endl;
39 double cpu_time_used = 0;
40 double validation_cpu_time = 0;
41 uint32_t info_read = 0;
43 uint32_t robs_read = 0;
44 uint32_t ros_counter = 0;
45 uint32_t event_counter = 0;
46 RealTimeClock my_clock;
49 std::fstream in( argv[1], std::ios::in | std::ios::binary );
52 std::cerr <<
"File `" << argv[1] <<
"' does not exist?!" << std::endl;
58 std::cout <<
"Working with paged storage with page size = " <<
PAGE_SIZE << std::endl;
60 std::cout <<
"Working with contiguous storage." << std::endl;
63 while ( in && in.good() && !in.eof() )
67 in.read( (
char*)
data, 8 );
68 if ( !in.good() || in.eof() )
break;
72 std::cout <<
"Word at offset " <<
HEX( offset ) <<
" is not "
81 size_t to_read =
data[1] << 2;
82 size_t page_counter = 0;
88 in.read( (
char*)paged_event[page_counter], readnow );
95 for (
size_t i = 0; i < page_counter; ++i )
97 myvec[i].iov_base = paged_event[i];
101 myvec[page_counter - 1].iov_len =
data[1] << 2 - ( page_counter - 1 ) *
PAGE_SIZE;
106 in.read( (
char*)event,
data[1] << 2 );
109 offset +=
data[1] << 2;
119 typedef const uint32_t* pointer_t;
125 Time start = my_clock.time();
129 uint32_t nsd = fe.children( sdp, 64 );
130 for (
size_t i = 0; i < nsd; ++i )
135 uint32_t nros = sd.
children( rosp, 256 );
136 for (
size_t j = 0; j < nros; ++j )
141 pointer_t robp[2048];
142 uint32_t nrob = ros.
children( robp, 2048 );
143 for (
size_t k = 0; k < nrob; ++k )
153 Time end = my_clock.time();
154 Time diff = end - start;
155 cpu_time_used += diff.as_nanoseconds();
156 start = my_clock.time();
157 end = my_clock.time();
159 validation_cpu_time += diff.as_microseconds();
167 std::cerr << std::endl <<
"Uncaught eformat exception: " << ex.
what() << std::endl;
172 std::cerr << std::endl <<
"Uncaught ERS exception: " << ex.
what() << std::endl;
175 catch ( std::exception& ex )
177 std::cerr << std::endl <<
"Uncaught std exception: " << ex.
what() << std::endl;
181 { std::cerr << std::endl <<
"Uncaught unknown exception" << std::endl; }
185 std::cout <<
" Statistics for ROB Header access:" << std::endl;
186 std::cout <<
" ---------------------------------" << std::endl;
187 std::cout <<
" - Total reading time: " << cpu_time_used / 1e6 <<
" milisecs" << std::endl;
188 std::cout <<
" - Reading time per Event (" << event_counter
189 <<
"): " << cpu_time_used / ( event_counter * 1e3 ) <<
" usecs" << std::endl;
190 std::cout <<
" - Reading time per ROS (" << ros_counter
191 <<
"): " << cpu_time_used / ( ros_counter * 1e3 ) <<
" usecs" << std::endl;
192 std::cout <<
" - Reading time per ROB (" << robs_read
193 <<
"): " << cpu_time_used / ( robs_read ) <<
" nanosecs" << std::endl;
194 std::cout <<
" - Reading time per info (" << info_read
195 <<
"): " << cpu_time_used / ( info_read ) <<
" nanosecs" << std::endl;
196 std::cout <<
" - Validation per event (after header access): "
197 << validation_cpu_time / ( event_counter ) <<
" microseconds" << std::endl;