cpp/benchmarks/arrow_chunk_reader_benchmark.cc (122 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ #include "benchmark/benchmark.h" #include "./benchmark_util.h" #include "graphar/api/arrow_reader.h" namespace graphar { BENCHMARK_DEFINE_F(BenchmarkFixture, CreateVertexPropertyArrowChunkReader) (::benchmark::State& state) { // NOLINT for (auto _ : state) { auto maybe_reader = VertexPropertyArrowChunkReader::Make( graph_info_, "person", "firstName"); if (maybe_reader.has_error()) { state.SkipWithError(maybe_reader.status().message().c_str()); return; } } } BENCHMARK_DEFINE_F(BenchmarkFixture, CreateAdjListArrowChunkReader) (::benchmark::State& state) { // NOLINT for (auto _ : state) { auto maybe_reader = AdjListArrowChunkReader::Make(graph_info_, "person", "knows", "person", AdjListType::ordered_by_source); if (maybe_reader.has_error()) { state.SkipWithError(maybe_reader.status().message().c_str()); return; } } } BENCHMARK_DEFINE_F(BenchmarkFixture, CreateAdjListOffsetArrowChunkReader) (::benchmark::State& state) { // NOLINT for (auto _ : state) { auto maybe_reader = AdjListOffsetArrowChunkReader::Make( graph_info_, "person", "knows", "person", AdjListType::ordered_by_source); if (maybe_reader.has_error()) { state.SkipWithError(maybe_reader.status().message().c_str()); return; } } } BENCHMARK_DEFINE_F(BenchmarkFixture, CreateAdjListPropertyArrowChunkReader) (::benchmark::State& state) { // NOLINT for (auto _ : state) { auto maybe_reader = AdjListPropertyArrowChunkReader::Make( graph_info_, "person", "knows", "person", "creationDate", AdjListType::ordered_by_source); if (maybe_reader.has_error()) { state.SkipWithError(maybe_reader.status().message().c_str()); return; } } } BENCHMARK_DEFINE_F(BenchmarkFixture, VertexPropertyArrowChunkReaderReadChunk) (::benchmark::State& state) { // NOLINT auto maybe_reader = VertexPropertyArrowChunkReader::Make(graph_info_, "person", "firstName"); if (maybe_reader.has_error()) { state.SkipWithError(maybe_reader.status().message().c_str()); return; } auto reader = maybe_reader.value(); for (auto _ : state) { assert(reader->seek(0).ok()); assert(reader->GetChunk().status().ok()); assert(reader->next_chunk().ok()); } } BENCHMARK_DEFINE_F(BenchmarkFixture, AdjListArrowChunkReaderReadChunk) (::benchmark::State& state) { // NOLINT auto maybe_reader = AdjListArrowChunkReader::Make( graph_info_, "person", "knows", "person", AdjListType::ordered_by_source); if (maybe_reader.has_error()) { state.SkipWithError(maybe_reader.status().message().c_str()); return; } auto reader = maybe_reader.value(); for (auto _ : state) { assert(reader->seek(0).ok()); assert(reader->GetChunk().status().ok()); assert(reader->next_chunk().ok()); } } BENCHMARK_DEFINE_F(BenchmarkFixture, AdjListOffsetArrowChunkReaderReadChunk) (::benchmark::State& state) { // NOLINT auto maybe_reader = AdjListOffsetArrowChunkReader::Make( graph_info_, "person", "knows", "person", AdjListType::ordered_by_source); if (maybe_reader.has_error()) { state.SkipWithError(maybe_reader.status().message().c_str()); return; } auto reader = maybe_reader.value(); for (auto _ : state) { assert(reader->seek(0).ok()); assert(reader->GetChunk().status().ok()); assert(reader->next_chunk().ok()); } } BENCHMARK_DEFINE_F(BenchmarkFixture, AdjListPropertyArrowChunkReaderReadChunk) (::benchmark::State& state) { // NOLINT auto maybe_reader = AdjListPropertyArrowChunkReader::Make( graph_info_, "person", "knows", "person", "creationDate", AdjListType::ordered_by_source); if (maybe_reader.has_error()) { state.SkipWithError(maybe_reader.status().message().c_str()); return; } auto reader = maybe_reader.value(); for (auto _ : state) { assert(reader->seek(0).ok()); assert(reader->GetChunk().status().ok()); assert(reader->next_chunk().ok()); } } BENCHMARK_REGISTER_F(BenchmarkFixture, CreateVertexPropertyArrowChunkReader); BENCHMARK_REGISTER_F(BenchmarkFixture, CreateAdjListArrowChunkReader); BENCHMARK_REGISTER_F(BenchmarkFixture, CreateAdjListOffsetArrowChunkReader); BENCHMARK_REGISTER_F(BenchmarkFixture, AdjListPropertyArrowChunkReaderReadChunk); BENCHMARK_REGISTER_F(BenchmarkFixture, VertexPropertyArrowChunkReaderReadChunk); BENCHMARK_REGISTER_F(BenchmarkFixture, AdjListArrowChunkReaderReadChunk); BENCHMARK_REGISTER_F(BenchmarkFixture, AdjListOffsetArrowChunkReaderReadChunk); BENCHMARK_REGISTER_F(BenchmarkFixture, AdjListOffsetArrowChunkReaderReadChunk); } // namespace graphar