astra-sim-alibabacloud/astra-sim/system/StreamStat.hh (51 lines of code) (raw):

/****************************************************************************** This source code is licensed under the MIT license found in the LICENSE file in the root directory of this source tree. *******************************************************************************/ #ifndef __STREAMSTAT_HH__ #define __STREAMSTAT_HH__ #include <assert.h> #include <math.h> #include <algorithm> #include <chrono> #include <cstdint> #include <ctime> #include <fstream> #include <list> #include <map> #include <sstream> #include <tuple> #include <vector> #include "Common.hh" #include "NetworkStat.hh" #include "SharedBusStat.hh" namespace AstraSim { class StreamStat : public SharedBusStat, public NetworkStat { public: std::list<double> queuing_delay; int stream_stat_counter; //~StreamStat()= default; StreamStat() : SharedBusStat(BusType::Shared, 0, 0, 0, 0) { stream_stat_counter = 0; } void update_stream_stats(StreamStat* streamStat) { update_bus_stats(BusType::Both, streamStat); update_network_stat(streamStat); if (queuing_delay.size() < streamStat->queuing_delay.size()) { int dif = streamStat->queuing_delay.size() - queuing_delay.size(); for (int i = 0; i < dif; i++) { queuing_delay.push_back(0); } } std::list<double>::iterator it = queuing_delay.begin(); for (auto& tick : streamStat->queuing_delay) { (*it) += tick; std::advance(it, 1); } stream_stat_counter++; } void take_stream_stats_average() { take_bus_stats_average(); take_network_stat_average(); for (auto& tick : queuing_delay) { tick /= stream_stat_counter; } } }; } // namespace AstraSim #endif