| 311 | BENCHMARK(BM_RleEncoding)->RangePair(1024, 65536, 1, 16); |
| 312 | |
| 313 | static 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 | |
| 340 | BENCHMARK(BM_RleDecoding)->RangePair(1024, 65536, 1, 16); |
| 341 |
nothing calls this directly
no test coverage detected