| 208 | |
| 209 | template <Compression::type COMPRESSION> |
| 210 | static void ReferenceDecompression( |
| 211 | benchmark::State& state) { // NOLINT non-const reference |
| 212 | auto data = MakeCompressibleData(8 * 1024 * 1024); // 8 MB |
| 213 | |
| 214 | auto codec = *Codec::Create(COMPRESSION); |
| 215 | |
| 216 | std::vector<uint8_t> compressed_data; |
| 217 | ARROW_UNUSED(Compress(codec.get(), data, &compressed_data)); |
| 218 | state.counters["ratio"] = |
| 219 | static_cast<double>(data.size()) / static_cast<double>(compressed_data.size()); |
| 220 | |
| 221 | std::vector<uint8_t> decompressed_data(data); |
| 222 | while (state.KeepRunning()) { |
| 223 | auto result = codec->Decompress(compressed_data.size(), compressed_data.data(), |
| 224 | decompressed_data.size(), decompressed_data.data()); |
| 225 | ARROW_CHECK(result.ok()); |
| 226 | ARROW_CHECK(*result == static_cast<int64_t>(decompressed_data.size())); |
| 227 | } |
| 228 | state.SetBytesProcessed(state.iterations() * data.size()); |
| 229 | } |
| 230 | |
| 231 | # ifdef ARROW_WITH_ZLIB |
| 232 | BENCHMARK_TEMPLATE(ReferenceStreamingCompression, Compression::GZIP); |
nothing calls this directly
no test coverage detected