diff options
Diffstat (limited to 'utils/gen_adldata/measurer.h')
-rw-r--r-- | utils/gen_adldata/measurer.h | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/utils/gen_adldata/measurer.h b/utils/gen_adldata/measurer.h index 63475ca..f49b9bf 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,24 +55,28 @@ 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; std::atomic<size_t> m_cache_matches; +#if 0 void LoadCache(const char *fileName); void SaveCache(const char *fileName); +#endif + + void LoadCacheX(const char *fileName); + void SaveCacheX(const char *fileName); struct destData { @@ -85,6 +90,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; @@ -96,11 +103,17 @@ struct MeasureThreaded void printProgress(); void printFinal(); +#if 0 void run(InstrumentsData::const_iterator i); +#endif + void run(BanksDump &bd, BanksDump::InstrumentEntry &e); void waitAll(); }; class OPLChipBase; +#if 0 extern DurationInfo MeasureDurations(const ins &in, OPLChipBase *chip); +#endif +extern DurationInfo MeasureDurations(const BanksDump &db, const BanksDump::InstrumentEntry &ins, OPLChipBase *chip); #endif // MEASURER_H |