14#include "eformat/eformat.h"
15#include "clocks/Clock.h"
16#include "clocks/Time.h"
29int main (
int argc,
char** argv)
34 std::cerr <<
"usage: " << argv[0] <<
" <test-file>"
40 double cpu_time_used = 0;
41 double validation_cpu_time = 0;
42 uint32_t info_read = 0;
44 uint32_t robs_read = 0;
45 uint32_t ros_counter = 0;
46 uint32_t event_counter = 0;
47 RealTimeClock my_clock;
50 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 = "
61 std::cout <<
"Working with contiguous storage." << std::endl;
64 while (in && in.good() && ! in.eof()) {
67 in.read((
char*)
data, 8);
68 if (!in.good() || in.eof())
break;
71 std::cout <<
"Word at offset " <<
HEX(offset) <<
" is not "
80 size_t to_read =
data[1]<<2;
81 size_t page_counter = 0;
86 in.read((
char*)paged_event[page_counter], readnow);
93 for (
size_t i=0; i<page_counter; ++i) {
94 myvec[i].iov_base = paged_event[i];
98 myvec[page_counter-1].iov_len =
data[1]<<2 - (page_counter-1)*
PAGE_SIZE;
103 in.read((
char*)event,
data[1]<<2);
106 offset +=
data[1]<<2;
111 const_iterator> fe(mem.begin());
116 typedef const uint32_t* pointer_t;
122 Time start = my_clock.time();
126 uint32_t nsd = fe.children(sdp, 64);
127 for (
size_t i=0; i<nsd; ++i) {
131 uint32_t nros = sd.
children(rosp, 256);
132 for (
size_t j=0; j<nros; ++j) {
136 pointer_t robp[2048];
137 uint32_t nrob = ros.
children(robp, 2048);
138 for (
size_t k=0; k<nrob; ++k) {
147 Time end = my_clock.time();
148 Time diff = end - start;
149 cpu_time_used += diff.as_nanoseconds();
150 start = my_clock.time();
151 end = my_clock.time();
153 validation_cpu_time += diff.as_microseconds();
160 std::cerr << std::endl
161 <<
"Uncaught eformat exception: " << ex.
what() << std::endl;
165 std::cerr << std::endl
166 <<
"Uncaught ERS exception: " << ex.
what() << std::endl;
169 catch (std::exception& ex) {
170 std::cerr << std::endl
171 <<
"Uncaught std exception: " << ex.
what() << std::endl;
175 std::cerr << std::endl <<
"Uncaught unknown exception" << std::endl;
180 std::cout <<
" Statistics for ROB Header access:" << std::endl;
181 std::cout <<
" ---------------------------------" << std::endl;
182 std::cout <<
" - Total reading time: " << cpu_time_used/1e6 <<
" milisecs"
184 std::cout <<
" - Reading time per Event ("
185 << event_counter <<
"): " << cpu_time_used/(event_counter*1e3)
186 <<
" usecs" << std::endl;
187 std::cout <<
" - Reading time per ROS ("
188 << ros_counter <<
"): " << cpu_time_used/(ros_counter*1e3)
189 <<
" usecs" << std::endl;
190 std::cout <<
" - Reading time per ROB ("
191 << robs_read <<
"): " << cpu_time_used/(robs_read)
192 <<
" nanosecs" << std::endl;
193 std::cout <<
" - Reading time per info ("
194 << info_read <<
"): " << cpu_time_used/(info_read)
195 <<
" nanosecs" << std::endl;
196 std::cout <<
" - Validation per event (after header access): "
197 << validation_cpu_time/(event_counter)
198 <<
" microseconds" << std::endl;
const char * what() const
Human description message.