-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathbenchmark.cpp
More file actions
84 lines (63 loc) · 2.2 KB
/
benchmark.cpp
File metadata and controls
84 lines (63 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <vector>
#include <random>
#include <iostream>
#include <cstdint>
#include <chrono>
#include <fstream>
#include <google/protobuf/io/zero_copy_stream_impl.h>
#include "memory_samples.pb.h"
#include "sample_file_util.h"
#include "protobuf_util.h"
using namespace std;
vector<sample_file::Sample> generate_random_samples(unsigned nb_samples)
{
//default_random_engine eng(0);
//uniform_int_distribution<uint32_t> distr(0);
vector<sample_file::Sample> samples;
samples.reserve(nb_samples);
for (unsigned i = 0; i < nb_samples; ++i)
{
sample_file::MemoryAccess begin, end;
begin.set_memory_address(10);
begin.set_access_counter(10);
begin.set_access_type(sample_file::AccessType::READ);
begin.set_thread_id(42);
begin.set_program_counter(10);
end.set_memory_address(begin.memory_address());
end.set_access_counter(begin.access_counter() + 10);
end.set_access_type(sample_file::AccessType::WRITE);
end.set_thread_id(42);
end.set_program_counter(10);
samples.emplace_back(make_sample(26, begin, end));
}
return samples;
}
int main(void)
{
const unsigned nb_samples = 10000000;
cout << "This benchmark will write then read " << nb_samples << " samples" << endl;
auto samples = generate_random_samples(nb_samples);
const std::string filename = "benchmark_ofstream.output";
SampleWriter output_sample_file(filename);
auto start = chrono::system_clock::now();
for (const auto& sample : samples)
{
output_sample_file.write_sample(sample);
}
output_sample_file.finalize();
auto end = chrono::system_clock::now();
chrono::duration<double> elapsed_seconds = end - start;
cout << "Write time: " << elapsed_seconds.count() << 's' <<endl;
samples.clear();
SampleReader input_sample_file(filename);
start = chrono::system_clock::now();
sample_file::Sample sample;
while (input_sample_file.read_sample(sample))
{
//samples.push_back(sample);
}
end = chrono::system_clock::now();
print_sample(samples[0]);
elapsed_seconds = end - start;
cout << "Read time: " << elapsed_seconds.count() << 's' <<endl;
}