@@ -41,7 +41,7 @@ namespace {
41
41
return conf;
42
42
}
43
43
44
- struct TPartIndexSeekFixture : public benchmark ::Fixture {
44
+ struct TPartEggsFixture : public benchmark ::Fixture {
45
45
using TGroupId = NPage::TGroupId;
46
46
47
47
void SetUp (const ::benchmark::State& state)
@@ -84,7 +84,7 @@ namespace {
84
84
TGroupId GroupId;
85
85
};
86
86
87
- struct TPartIndexIteratorFixture : public benchmark ::Fixture {
87
+ struct TPartSubsetFixture : public benchmark ::Fixture {
88
88
using TGroupId = NPage::TGroupId;
89
89
90
90
void SetUp (const ::benchmark::State& state)
@@ -96,6 +96,14 @@ namespace {
96
96
Mass = new NTest::TMass (new NTest::TModelStd (groups), history ? 1000000 : 300000 );
97
97
Subset = TMake (*Mass, PageConf (Mass->Model ->Scheme ->Families .size (), useBTree)).Mixed (0 , 1 , TMixerOne{ }, history ? 0.7 : 0 );
98
98
99
+ for (const auto & part : Subset->Flatten ) {
100
+ Cerr << " DataBytes = " << part->Stat .Bytes << " DataPages = " << IndexTools::CountMainPages (*part) << Endl;
101
+ Cerr << " FlatIndexBytes = " << part->GetPageSize (part->IndexPages .Groups [groups ? 1 : 0 ], {}) << " BTreeIndexBytes = " << (useBTree ? part->IndexPages .BTreeGroups [groups ? 1 : 0 ].IndexSize : 0 ) << Endl;
102
+ if (useBTree) {
103
+ Cerr << " Levels = " << part->IndexPages .BTreeGroups [groups ? 1 : 0 ].LevelCount << Endl;
104
+ }
105
+ }
106
+
99
107
if (history) {
100
108
Checker = new TCheckIt (*Subset, {new TTestEnv ()}, TRowVersion (0 , 8 ));
101
109
CheckerReverse = new TCheckReverseIt (*Subset, {new TTestEnv ()}, TRowVersion (0 , 8 ));
@@ -110,10 +118,11 @@ namespace {
110
118
TAutoPtr<TSubset> Subset;
111
119
TAutoPtr<TCheckIt> Checker;
112
120
TAutoPtr<TCheckReverseIt> CheckerReverse;
121
+ TTestEnv Env;
113
122
};
114
123
}
115
124
116
- BENCHMARK_DEFINE_F (TPartIndexSeekFixture , SeekRowId)(benchmark::State& state) {
125
+ BENCHMARK_DEFINE_F (TPartEggsFixture , SeekRowId)(benchmark::State& state) {
117
126
const bool useBTree = state.range (0 );
118
127
119
128
for (auto _ : state) {
@@ -129,7 +138,7 @@ BENCHMARK_DEFINE_F(TPartIndexSeekFixture, SeekRowId)(benchmark::State& state) {
129
138
}
130
139
}
131
140
132
- BENCHMARK_DEFINE_F (TPartIndexSeekFixture , Next)(benchmark::State& state) {
141
+ BENCHMARK_DEFINE_F (TPartEggsFixture , Next)(benchmark::State& state) {
133
142
const bool useBTree = state.range (0 );
134
143
135
144
THolder<IIndexIter> iter;
@@ -150,7 +159,7 @@ BENCHMARK_DEFINE_F(TPartIndexSeekFixture, Next)(benchmark::State& state) {
150
159
}
151
160
}
152
161
153
- BENCHMARK_DEFINE_F (TPartIndexSeekFixture , Prev)(benchmark::State& state) {
162
+ BENCHMARK_DEFINE_F (TPartEggsFixture , Prev)(benchmark::State& state) {
154
163
const bool useBTree = state.range (0 );
155
164
156
165
THolder<IIndexIter> iter;
@@ -171,7 +180,7 @@ BENCHMARK_DEFINE_F(TPartIndexSeekFixture, Prev)(benchmark::State& state) {
171
180
}
172
181
}
173
182
174
- BENCHMARK_DEFINE_F (TPartIndexSeekFixture , SeekKey)(benchmark::State& state) {
183
+ BENCHMARK_DEFINE_F (TPartEggsFixture , SeekKey)(benchmark::State& state) {
175
184
const bool useBTree = state.range (0 );
176
185
const ESeek seek = ESeek (state.range (2 ));
177
186
@@ -190,7 +199,7 @@ BENCHMARK_DEFINE_F(TPartIndexSeekFixture, SeekKey)(benchmark::State& state) {
190
199
}
191
200
}
192
201
193
- BENCHMARK_DEFINE_F (TPartIndexIteratorFixture , DoReads)(benchmark::State& state) {
202
+ BENCHMARK_DEFINE_F (TPartSubsetFixture , DoReads)(benchmark::State& state) {
194
203
const bool reverse = state.range (3 );
195
204
const ESeek seek = static_cast <ESeek>(state.range (4 ));
196
205
const ui32 items = state.range (5 );
@@ -212,39 +221,72 @@ BENCHMARK_DEFINE_F(TPartIndexIteratorFixture, DoReads)(benchmark::State& state)
212
221
}
213
222
}
214
223
215
- BENCHMARK_REGISTER_F (TPartIndexSeekFixture, SeekRowId)
224
+ BENCHMARK_DEFINE_F (TPartSubsetFixture, DoCharge)(benchmark::State& state) {
225
+ const bool reverse = state.range (3 );
226
+ const ui32 items = state.range (4 );
227
+
228
+ auto tags = TVector<TTag>();
229
+ for (auto c : Subset->Scheme ->Cols ) {
230
+ tags.push_back (c.Tag );
231
+ }
232
+ TRun run (*Subset->Scheme ->Keys );
233
+ NTest::TRowTool tool (*Subset->Scheme );
234
+
235
+ for (auto _ : state) {
236
+ auto row1 = Rnd.Uniform (Mass->Saved .Size ());
237
+ auto row2 = Min (row1 + items, Mass->Saved .Size () - 1 );
238
+ auto key1 = tool.KeyCells (Mass->Saved [row1]);
239
+ auto key2 = tool.KeyCells (Mass->Saved [row2]);
240
+ if (reverse) {
241
+ ChargeRangeReverse (&Env, key1, key2, run, *Subset->Scheme ->Keys , tags, items, 0 );
242
+ } else {
243
+ ChargeRange (&Env, key1, key2, run, *Subset->Scheme ->Keys , tags, items, 0 );
244
+ }
245
+ }
246
+ }
247
+
248
+ BENCHMARK_REGISTER_F (TPartEggsFixture, SeekRowId)
216
249
->ArgsProduct ({
217
250
/* b-tree */ {0 , 1 },
218
251
/* groups: */ {0 , 1 }})
219
252
->Unit(benchmark::kMicrosecond );
220
253
221
- BENCHMARK_REGISTER_F (TPartIndexSeekFixture , Next)
254
+ BENCHMARK_REGISTER_F (TPartEggsFixture , Next)
222
255
->ArgsProduct ({
223
256
/* b-tree */ {0 , 1 },
224
257
/* groups: */ {0 , 1 }})
225
258
->Unit(benchmark::kMicrosecond );
226
259
227
- BENCHMARK_REGISTER_F (TPartIndexSeekFixture , Prev)
260
+ BENCHMARK_REGISTER_F (TPartEggsFixture , Prev)
228
261
->ArgsProduct ({
229
262
/* b-tree */ {0 , 1 },
230
263
/* groups: */ {0 , 1 }})
231
264
->Unit(benchmark::kMicrosecond );
232
265
233
- BENCHMARK_REGISTER_F (TPartIndexSeekFixture , SeekKey)
266
+ BENCHMARK_REGISTER_F (TPartEggsFixture , SeekKey)
234
267
->ArgsProduct ({
235
268
/* b-tree */ {0 , 1 },
236
269
/* groups: */ {0 , 1 },
237
- /* ESeek: */ {0 , 1 , 2 }})
270
+ /* ESeek: */ {1 }})
238
271
->Unit(benchmark::kMicrosecond );
239
272
240
- BENCHMARK_REGISTER_F (TPartIndexIteratorFixture , DoReads)
273
+ BENCHMARK_REGISTER_F (TPartSubsetFixture , DoReads)
241
274
->ArgsProduct ({
242
275
/* b-tree */ {0 , 1 },
243
276
/* groups: */ {1 },
244
277
/* history: */ {1 },
245
278
/* reverse: */ {0 },
246
279
/* ESeek: */ {1 },
247
- /* items */ {1 , 10 , 100 }})
280
+ /* items */ {1 , 50 , 1000 }})
281
+ ->Unit(benchmark::kMicrosecond );
282
+
283
+ BENCHMARK_REGISTER_F (TPartSubsetFixture, DoCharge)
284
+ ->ArgsProduct ({
285
+ /* b-tree */ {0 , 1 },
286
+ /* groups: */ {1 },
287
+ /* history: */ {1 },
288
+ /* reverse: */ {0 },
289
+ /* items */ {1 , 50 , 1000 }})
248
290
->Unit(benchmark::kMicrosecond );
249
291
250
292
}
0 commit comments