- auto end = std::chrono::high_resolution_clock::now();
- // Ad hoc metric reporting for now ...
- // every reporting interval, prints to stdou
- // 1, reporting interval (# of packets)
- // 2. average processing time (in micro seconds) across each packet
- // 3. standard deviation (micro seconds ^2) a
- // 4. maximum processing time (in micro seconds)
-
- if(num_proc_packets == _reporting_interval){
- auto epoch = std::chrono::time_point_cast<std::chrono::seconds>(std::chrono::system_clock::now()).time_since_epoch();
- double avg_latency = processing_duration/num_proc_packets;
- double std_dev_latency = processing_dev/num_proc_packets - avg_latency * avg_latency;
- std::cout << "Processing Metrics : " << epoch.count() << "," << num_proc_packets << "," << avg_latency << "," << std_dev_latency << "," << max_proc_duration << std::endl;
- processing_duration = 0;
- processing_dev = 0;
- max_proc_duration = 0;
- num_proc_packets = 0;
- }
-
- double elapsed = std::chrono::duration<double, std::micro>(end - start).count();
- if(elapsed > max_proc_duration){
- max_proc_duration = elapsed;
- }
-
- processing_duration += elapsed;
- processing_dev += elapsed * elapsed;
- num_proc_packets ++;
-
-