summaryrefslogtreecommitdiff
path: root/src/mem/ruby/profiler/AddressProfiler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/ruby/profiler/AddressProfiler.cc')
-rw-r--r--src/mem/ruby/profiler/AddressProfiler.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/mem/ruby/profiler/AddressProfiler.cc b/src/mem/ruby/profiler/AddressProfiler.cc
index 4274569ad..5c1b7352c 100644
--- a/src/mem/ruby/profiler/AddressProfiler.cc
+++ b/src/mem/ruby/profiler/AddressProfiler.cc
@@ -29,7 +29,6 @@
#include <vector>
#include "base/stl_helpers.hh"
-#include "mem/gems_common/PrioHeap.hh"
#include "mem/protocol/CacheMsg.hh"
#include "mem/ruby/profiler/AddressProfiler.hh"
#include "mem/ruby/profiler/Profiler.hh"
@@ -70,15 +69,16 @@ printSorted(ostream& out, int num_of_sequencers, const AddressMap &record_map,
const int records_printed = 100;
uint64 misses = 0;
- PrioHeap<const AccessTraceForAddress*> heap;
+ std::vector<const AccessTraceForAddress *> sorted;
AddressMap::const_iterator i = record_map.begin();
AddressMap::const_iterator end = record_map.end();
for (; i != end; ++i) {
const AccessTraceForAddress* record = &i->second;
misses += record->getTotal();
- heap.insert(record);
+ sorted.push_back(record);
}
+ sort(sorted.begin(), sorted.end(), AccessTraceForAddress::less_equal);
out << "Total_entries_" << description << ": " << record_map.size()
<< endl;
@@ -106,8 +106,9 @@ printSorted(ostream& out, int num_of_sequencers, const AddressMap &record_map,
}
int counter = 0;
- while (heap.size() > 0 && counter < records_printed) {
- const AccessTraceForAddress* record = heap.extractMin();
+ int max = sorted.size();
+ while (counter < max && counter < records_printed) {
+ const AccessTraceForAddress* record = sorted[counter];
double percent = 100.0 * (record->getTotal() / double(misses));
out << description << " | " << percent << " % " << *record << endl;
all_records.add(record->getTotal());
@@ -117,8 +118,8 @@ printSorted(ostream& out, int num_of_sequencers, const AddressMap &record_map,
m_touched_weighted_vec[record->getTouchedBy()] += record->getTotal();
}
- while (heap.size() > 0) {
- const AccessTraceForAddress* record = heap.extractMin();
+ while (counter < max) {
+ const AccessTraceForAddress* record = sorted[counter];
all_records.add(record->getTotal());
remaining_records.add(record->getTotal());
all_records_log.add(record->getTotal());