diff options
Diffstat (limited to 'utils/gen_adldata/measurer.h')
-rw-r--r-- | utils/gen_adldata/measurer.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/utils/gen_adldata/measurer.h b/utils/gen_adldata/measurer.h index 63475ca..60fdcb7 100644 --- a/utils/gen_adldata/measurer.h +++ b/utils/gen_adldata/measurer.h @@ -6,6 +6,7 @@ #include <mutex> #include <condition_variable> #include <thread> +#include <array> #include "progs_cache.h" @@ -54,17 +55,16 @@ private: struct MeasureThreaded { + typedef std::array<int_fast32_t, 10> OperatorsKey; typedef std::map<ins, DurationInfo> DurationInfoCache; + typedef std::map<OperatorsKey, DurationInfo> DurationInfoCacheX; - MeasureThreaded() : - m_semaphore(int(std::thread::hardware_concurrency()) * 2), - m_done(0), - m_cache_matches(0) - {} + MeasureThreaded(); Semaphore m_semaphore; std::mutex m_durationInfo_mx; DurationInfoCache m_durationInfo; + DurationInfoCacheX m_durationInfoX; std::atomic_bool m_delete_tail; size_t m_total = 0; std::atomic<size_t> m_done; @@ -73,6 +73,9 @@ struct MeasureThreaded void LoadCache(const char *fileName); void SaveCache(const char *fileName); + void LoadCacheX(const char *fileName); + void SaveCacheX(const char *fileName); + struct destData { destData() @@ -85,6 +88,8 @@ struct MeasureThreaded } MeasureThreaded *myself; std::map<ins, std::pair<size_t, std::set<std::string> > >::const_iterator i; + BanksDump *bd; + BanksDump::InstrumentEntry *bd_ins; std::thread m_work; std::atomic_bool m_works; @@ -97,10 +102,12 @@ struct MeasureThreaded void printProgress(); void printFinal(); void run(InstrumentsData::const_iterator i); + void run(BanksDump &bd, BanksDump::InstrumentEntry &e); void waitAll(); }; class OPLChipBase; extern DurationInfo MeasureDurations(const ins &in, OPLChipBase *chip); +extern DurationInfo MeasureDurations(const BanksDump &db, const BanksDump::InstrumentEntry &ins, OPLChipBase *chip); #endif // MEASURER_H |