MCPcopy Create free account
hub / github.com/apache/arrow / DecodeLevels

Function DecodeLevels

cpp/src/parquet/column_reader_benchmark.cc:309–337  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

307}
308
309static void DecodeLevels(Encoding::type level_encoding, int16_t max_level, int num_levels,
310 int batch_size, int level_repeat_count,
311 ::benchmark::State& state) {
312 std::vector<uint8_t> bytes;
313 {
314 std::vector<int16_t> input_levels;
315 GenerateLevels(/*level_repeats=*/level_repeat_count, /*max_repeat_factor=*/max_level,
316 num_levels, &input_levels);
317 EncodeLevels(level_encoding, max_level, num_levels, input_levels.data(), &bytes);
318 }
319
320 LevelDecoder decoder;
321 std::vector<int16_t> output_levels(batch_size);
322 for (auto _ : state) {
323 state.PauseTiming();
324 decoder.SetData(level_encoding, max_level, num_levels, bytes.data(),
325 static_cast<int>(bytes.size()));
326 state.ResumeTiming();
327 // Decode multiple times with batch_size
328 while (true) {
329 int levels_decoded = decoder.Decode(batch_size, output_levels.data());
330 if (levels_decoded == 0) {
331 break;
332 }
333 }
334 }
335 state.SetBytesProcessed(state.iterations() * num_levels * sizeof(int16_t));
336 state.SetItemsProcessed(state.iterations() * num_levels);
337}
338
339static void ReadLevels_Rle(::benchmark::State& state) {
340 int16_t max_level = static_cast<int16_t>(state.range(0));

Callers 2

ReadLevels_RleFunction · 0.85
ReadLevels_BitPackFunction · 0.85

Calls 6

GenerateLevelsFunction · 0.70
EncodeLevelsFunction · 0.70
dataMethod · 0.45
SetDataMethod · 0.45
sizeMethod · 0.45
DecodeMethod · 0.45

Tested by

no test coverage detected