5
5
#include < prevector.h>
6
6
7
7
#include < bench/bench.h>
8
+ #include < script/script.h>
8
9
#include < serialize.h>
9
10
#include < streams.h>
10
11
11
12
#include < type_traits>
12
13
#include < vector>
13
14
14
- struct nontrivial_t {
15
+ struct nontrivial_t
16
+ {
15
17
int x{-1 };
16
18
nontrivial_t () = default ;
17
19
SERIALIZE_METHODS (nontrivial_t , obj) { READWRITE (obj.x ); }
18
20
};
21
+
19
22
static_assert (!std::is_trivially_default_constructible_v<nontrivial_t >,
20
23
" expected nontrivial_t to not be trivially constructible" );
21
24
@@ -27,35 +30,35 @@ template <typename T>
27
30
static void PrevectorDestructor (benchmark::Bench& bench)
28
31
{
29
32
bench.batch (2 ).run ([&] {
30
- prevector<28 , T> t0;
31
- prevector<28 , T> t1;
32
- t0.resize (28 );
33
- t1.resize (29 );
33
+ prevector<CScriptBase::STATIC_SIZE , T> t0;
34
+ prevector<CScriptBase::STATIC_SIZE , T> t1;
35
+ t0.resize (CScriptBase::STATIC_SIZE );
36
+ t1.resize (CScriptBase::STATIC_SIZE + 1 );
34
37
});
35
38
}
36
39
37
40
template <typename T>
38
41
static void PrevectorClear (benchmark::Bench& bench)
39
42
{
40
- prevector<28 , T> t0;
41
- prevector<28 , T> t1;
43
+ prevector<CScriptBase::STATIC_SIZE , T> t0;
44
+ prevector<CScriptBase::STATIC_SIZE , T> t1;
42
45
bench.batch (2 ).run ([&] {
43
- t0.resize (28 );
46
+ t0.resize (CScriptBase::STATIC_SIZE );
44
47
t0.clear ();
45
- t1.resize (29 );
48
+ t1.resize (CScriptBase::STATIC_SIZE + 1 );
46
49
t1.clear ();
47
50
});
48
51
}
49
52
50
53
template <typename T>
51
54
static void PrevectorResize (benchmark::Bench& bench)
52
55
{
53
- prevector<28 , T> t0;
54
- prevector<28 , T> t1;
56
+ prevector<CScriptBase::STATIC_SIZE , T> t0;
57
+ prevector<CScriptBase::STATIC_SIZE , T> t1;
55
58
bench.batch (4 ).run ([&] {
56
- t0.resize (28 );
59
+ t0.resize (CScriptBase::STATIC_SIZE );
57
60
t0.resize (0 );
58
- t1.resize (29 );
61
+ t1.resize (CScriptBase::STATIC_SIZE + 1 );
59
62
t1.resize (0 );
60
63
});
61
64
}
@@ -64,8 +67,8 @@ template <typename T>
64
67
static void PrevectorDeserialize (benchmark::Bench& bench)
65
68
{
66
69
DataStream s0{};
67
- prevector<28 , T> t0;
68
- t0.resize (28 );
70
+ prevector<CScriptBase::STATIC_SIZE , T> t0;
71
+ t0.resize (CScriptBase::STATIC_SIZE );
69
72
for (auto x = 0 ; x < 900 ; ++x) {
70
73
s0 << t0;
71
74
}
@@ -74,7 +77,7 @@ static void PrevectorDeserialize(benchmark::Bench& bench)
74
77
s0 << t0;
75
78
}
76
79
bench.batch (1000 ).run ([&] {
77
- prevector<28 , T> t1;
80
+ prevector<CScriptBase::STATIC_SIZE , T> t1;
78
81
for (auto x = 0 ; x < 1000 ; ++x) {
79
82
s0 >> t1;
80
83
}
@@ -86,7 +89,7 @@ template <typename T>
86
89
static void PrevectorFillVectorDirect (benchmark::Bench& bench)
87
90
{
88
91
bench.run ([&] {
89
- std::vector<prevector<28 , T>> vec;
92
+ std::vector<prevector<CScriptBase::STATIC_SIZE , T>> vec;
90
93
vec.reserve (260 );
91
94
for (size_t i = 0 ; i < 260 ; ++i) {
92
95
vec.emplace_back ();
@@ -99,11 +102,11 @@ template <typename T>
99
102
static void PrevectorFillVectorIndirect (benchmark::Bench& bench)
100
103
{
101
104
bench.run ([&] {
102
- std::vector<prevector<28 , T>> vec;
105
+ std::vector<prevector<CScriptBase::STATIC_SIZE , T>> vec;
103
106
vec.reserve (260 );
104
107
for (size_t i = 0 ; i < 260 ; ++i) {
105
108
// force allocation
106
- vec.emplace_back (29 , T{});
109
+ vec.emplace_back (CScriptBase::STATIC_SIZE + 1 , T{});
107
110
}
108
111
});
109
112
}
0 commit comments