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

Function BM_RleDecoding

cpp/src/parquet/column_io_benchmark.cc:313–338  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

311BENCHMARK(BM_RleEncoding)->RangePair(1024, 65536, 1, 16);
312
313static void BM_RleDecoding(::benchmark::State& state) {
314 LevelEncoder level_encoder;
315 std::vector<int16_t> levels(state.range(0), 0);
316 int64_t n = 0;
317 std::generate(levels.begin(), levels.end(),
318 [&state, &n] { return (n++ % state.range(1)) == 0; });
319 int16_t max_level = 1;
320 int rle_size = LevelEncoder::MaxBufferSize(Encoding::RLE, max_level,
321 static_cast<int>(levels.size()));
322 auto buffer_rle = AllocateBuffer();
323 PARQUET_THROW_NOT_OK(buffer_rle->Resize(rle_size + sizeof(int32_t)));
324 level_encoder.Init(Encoding::RLE, max_level, static_cast<int>(levels.size()),
325 buffer_rle->mutable_data() + sizeof(int32_t), rle_size);
326 level_encoder.Encode(static_cast<int>(levels.size()), levels.data());
327 reinterpret_cast<int32_t*>(buffer_rle->mutable_data())[0] = level_encoder.len();
328
329 while (state.KeepRunning()) {
330 LevelDecoder level_decoder;
331 level_decoder.SetData(Encoding::RLE, max_level, static_cast<int>(levels.size()),
332 buffer_rle->data(), rle_size);
333 level_decoder.Decode(static_cast<int>(state.range(0)), levels.data());
334 }
335
336 state.SetBytesProcessed(state.iterations() * state.range(0) * sizeof(int16_t));
337 state.SetItemsProcessed(state.iterations() * state.range(0));
338}
339
340BENCHMARK(BM_RleDecoding)->RangePair(1024, 65536, 1, 16);
341

Callers

nothing calls this directly

Calls 12

AllocateBufferFunction · 0.70
beginMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45
ResizeMethod · 0.45
InitMethod · 0.45
mutable_dataMethod · 0.45
EncodeMethod · 0.45
dataMethod · 0.45
lenMethod · 0.45
SetDataMethod · 0.45
DecodeMethod · 0.45

Tested by

no test coverage detected