Если я это хорошо понимаю, предлагаемое решение не будет работать, потому что нет возможности подсчитать количество обращений и промахов. Возможно, вам стоит рассмотреть что-то среди этих строк: структура counters
отслеживает количество промахов и хитов l1/l2. Карта c
отображает каждый адрес на свой счетчик.
struct counters {
int l1_hits, l1_misses, l2_hits, l2_misses;
};
map<int, counters> c;
while (!EOF) {
auto it = c.find(adress);
if (it == c.end()) it = c.insert(address, {0,0,0,0});
bool hit1 = test_bar(address); # L1
if (hit1) ++it->second.l1_hits;
else {
++it->second.l1_misses;
bool hit2 = test_bar(address); # L2
if (hit2) ++it->second.l2_hits;
else ++it->second.l2_misses;
}
}
// print
for (auto it : c) {
cout << it.first
<< " " << it.second.l1_hits
<< " " << it.second.l1_misses
<< " " << it.second.l2_hits
<< " " << it.second.l2_misses << endl;
}
Как вы можете суммировать их сейчас? и печатать? – pistal
То, что вы поняли, правильно! – pistal
Что вы хотите? Список количества обращений и промахов по каждому адресу? – anumi