aboutsummaryrefslogtreecommitdiff
path: root/utils/gen_adldata/measurer.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/gen_adldata/measurer.h')
-rw-r--r--utils/gen_adldata/measurer.h17
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