diff --git a/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/phasedependenciestracker.cpp b/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/phasedependenciestracker.cpp index 62a18aae..58936c95 100644 --- a/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/phasedependenciestracker.cpp +++ b/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/phasedependenciestracker.cpp @@ -35,26 +35,49 @@ #include "phasedependenciestracker.h" +#include +#include + void PhaseDependenciesTracker::calculateDependencies(TraceDB& tdb, std::vector& commands) { - auto deviceConfig = ConfigurationFactory::make(tdb); + using std::chrono::high_resolution_clock; + using std::chrono::duration_cast; + using std::chrono::duration; + using std::chrono::microseconds; + + + auto deviceInstantiationTimeStart = high_resolution_clock::now(); + auto deviceConfig = ConfigurationFactory::make(tdb); + auto deviceInstantiationTimeEnd = high_resolution_clock::now(); + auto deviceInstantiationTimeDuration = duration_cast(deviceInstantiationTimeEnd - deviceInstantiationTimeStart); mBeginTransaction(tdb); mDropTable(tdb); if (commands.size() > 0) { - auto& phases = mGetFilteredPhases(deviceConfig, tdb, commands); - + auto phasesLoadingTimeStart = high_resolution_clock::now(); + auto& phases = mGetFilteredPhases(deviceConfig, tdb, commands); + auto phasesLoadingTimeEnd = high_resolution_clock::now(); + auto phasesLoadingTimeDuration = duration_cast(phasesLoadingTimeEnd - phasesLoadingTimeStart); + if (phases.size() != 0) { - auto& entries = mCalculateDependencies(deviceConfig, phases, commands); - + auto dependenciesCalcTimeStart = high_resolution_clock::now(); + auto& entries = mCalculateDependencies(deviceConfig, phases, commands); + auto dependenciesCalcTimeEnd = high_resolution_clock::now(); + auto dependenciesCalcTimeDuration = duration_cast(dependenciesCalcTimeEnd - dependenciesCalcTimeStart); + if (entries.size() > 0) { mCreateTable(tdb); } mInsertIntoTable(tdb, entries); + std::cout << "PhaseDependenciesTracker times (us):" << std::endl + << "\tDevice instantiation: " << deviceInstantiationTimeDuration.count() << std::endl + << "\tPhase loading: " << phasesLoadingTimeDuration.count() << std::endl + << "\tDependencies calculation: " << dependenciesCalcTimeDuration.count() << std::endl; + } else { // TODO - not sure if necessary. Still, a possibility // mRollbackChanges(tdb);