Skip to content

Commit 656b176

Browse files
committed
Better min distances reporting
1 parent 2a1df7b commit 656b176

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/microbenchmark-pages.cpp

+9-6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <cstdlib>
44
#include <cstring>
55
#include <iostream>
6+
#include <map>
67
#include <random>
78
#include <thread>
89
#include <unordered_set>
@@ -112,7 +113,6 @@ std::unordered_set<void*> litter(std::size_t objectSize, std::size_t nPages,
112113
#define ITERATIONS 40'000
113114
#endif
114115

115-
const auto nMinDistances = std::min(256, N - 1);
116116
const auto distanceClampMax = PAGE_SIZE;
117117

118118
int main([[maybe_unused]] int argc, [[maybe_unused]] char** argv) {
@@ -146,7 +146,7 @@ int main([[maybe_unused]] int argc, [[maybe_unused]] char** argv) {
146146

147147
std::sort(objects.begin(), objects.end());
148148

149-
auto minDistances = std::vector<std::size_t>(nMinDistances, std::numeric_limits<std::size_t>::max());
149+
auto distances = std::map<std::size_t, std::size_t>();
150150
std::size_t sumDistances = 0;
151151

152152
for (std::size_t i = 1; i < objects.size(); ++i) {
@@ -155,9 +155,7 @@ int main([[maybe_unused]] int argc, [[maybe_unused]] char** argv) {
155155
0, distanceClampMax);
156156

157157
sumDistances += distance;
158-
159-
minDistances.insert(std::upper_bound(minDistances.begin(), minDistances.end(), distance), distance);
160-
minDistances.erase(minDistances.end() - 1);
158+
++distances[distance];
161159
}
162160

163161
const auto intersection
@@ -167,7 +165,12 @@ int main([[maybe_unused]] int argc, [[maybe_unused]] char** argv) {
167165

168166
const auto avgDistance = (double) sumDistances / (objects.size() - 1);
169167

170-
std::cout << "Min distances: " << minDistances << std::endl;
168+
std::cout << "Min distances:" << std::endl;
169+
for (const auto [distance, count] : distances) {
170+
if (count > 20) {
171+
std::cout << "\t" << distance << ": " << count << std::endl;
172+
}
173+
}
171174
std::cout << "Avg distance: " << avgDistance << std::endl;
172175

173176
const auto start = std::chrono::high_resolution_clock::now();

0 commit comments

Comments
 (0)