MCPcopy Create free account
hub / github.com/Project-OSRM/osrm-backend / measure_random_access

Function measure_random_access

src/benchmarks/packed_vector.cpp:30–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28
29template <std::size_t num_rounds, std::size_t num_entries, typename VectorT>
30auto measure_random_access()
31{
32 std::vector<std::size_t> indices(num_entries);
33 std::iota(indices.begin(), indices.end(), 0);
34 std::mt19937 g(1337);
35 std::shuffle(indices.begin(), indices.end(), g);
36
37 VectorT vector(num_entries);
38
39 TIMER_START(write);
40 for (auto round : util::irange<std::size_t>(0, num_rounds))
41 {
42 for (auto idx : util::irange<std::size_t>(0, num_entries))
43 {
44 vector[indices[idx]] = idx + round;
45 }
46 }
47 TIMER_STOP(write);
48
49 TIMER_START(read);
50 auto sum = 0;
51 for (auto round : util::irange<std::size_t>(0, num_rounds))
52 {
53 sum = round;
54 for (auto idx : util::irange<std::size_t>(0, num_entries))
55 {
56 sum += vector[indices[idx]];
57 }
58 dont_optimize_away(sum);
59 }
60 TIMER_STOP(read);
61
62 return Measurement{TIMER_MSEC(write), TIMER_MSEC(read)};
63}
64
65int main(int, char **)
66{

Callers

nothing calls this directly

Calls 4

shuffleFunction · 0.85
dont_optimize_awayFunction · 0.70
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected