| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Benchmarks for a reference encoder / decoder specialized to PaddedStructTree. |
| |
| #include <cstdint> |
| |
| #include "builder.h" |
| #include "decode_benchmark_util.h" |
| #include "encode_benchmark_util.h" |
| #include "util.h" |
| |
| namespace { |
| |
| bool EncodeStructTree(void* value, const char** error, |
| fit::function<void(const uint8_t*, size_t)> callback) { |
| uint8_t buf[sizeof(llcpp::benchmarkfidl::StructTree8)]; |
| memcpy(buf, value, sizeof(buf)); |
| |
| callback(buf, sizeof(buf)); |
| return true; |
| } |
| |
| bool DecodeStructTree(uint8_t* bytes, size_t bytes_size, zx_handle_t* handles, size_t handles_size, |
| const char** error) { |
| if (handles_size != 0) { |
| *error = "no handles expected"; |
| return false; |
| } |
| return true; |
| } |
| |
| bool BenchmarkEncodeStructTree(perftest::RepeatState* state) { |
| return encode_benchmark_util::EncodeBenchmark(state, benchmark_suite::Build_StructTree_Depth8, |
| EncodeStructTree); |
| } |
| bool BenchmarkDecodeStructTree(perftest::RepeatState* state) { |
| return decode_benchmark_util::DecodeBenchmark(state, benchmark_suite::Build_StructTree_Depth8, |
| DecodeStructTree); |
| } |
| |
| void RegisterTests() { |
| perftest::RegisterTest("Reference/Encode/StructTree/Depth8", BenchmarkEncodeStructTree); |
| perftest::RegisterTest("Reference/Decode/StructTree/Depth8", BenchmarkDecodeStructTree); |
| } |
| PERFTEST_CTOR(RegisterTests) |
| |
| } // namespace |