| 65 | } |
| 66 | |
| 67 | std::shared_ptr<Buffer> WriteFile(benchmark::State* state) { |
| 68 | PARQUET_ASSIGN_OR_THROW(auto sink, BufferOutputStream::Create()); |
| 69 | |
| 70 | auto writer = ParquetFileWriter::Open(sink, schema_root_, writer_properties_); |
| 71 | std::vector<int32_t> int32_values(1, 42); |
| 72 | int64_t data_size = 0; |
| 73 | for (int rg = 0; rg < num_row_groups_; ++rg) { |
| 74 | auto row_group_writer = writer->AppendRowGroup(); |
| 75 | for (int col = 0; col < num_columns_; ++col) { |
| 76 | auto col_writer = row_group_writer->NextColumn(); |
| 77 | ARROW_CHECK_EQ(col_writer->type(), Type::INT32); |
| 78 | auto typed_col_writer = static_cast<Int32Writer*>(col_writer); |
| 79 | typed_col_writer->WriteBatch( |
| 80 | /*num_values=*/static_cast<int64_t>(int32_values.size()), |
| 81 | /*def_levels=*/nullptr, /*rep_levels=*/nullptr, int32_values.data()); |
| 82 | typed_col_writer->Close(); |
| 83 | } |
| 84 | row_group_writer->Close(); |
| 85 | data_size += row_group_writer->total_compressed_bytes_written(); |
| 86 | } |
| 87 | writer->Close(); |
| 88 | PARQUET_ASSIGN_OR_THROW(auto buf, sink->Finish()); |
| 89 | state->counters["file_size"] = static_cast<double>(buf->size()); |
| 90 | // Note that "data_size" includes the Thrift page headers |
| 91 | state->counters["data_size"] = static_cast<double>(data_size); |
| 92 | return buf; |
| 93 | } |
| 94 | |
| 95 | void ReadFile(std::shared_ptr<Buffer> contents) { |
| 96 | auto source = std::make_shared<BufferReader>(contents); |
no test coverage detected