blob: ebd24ea01730699960c43c7bca45640102032eec [file] [log] [blame]
// 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.
#include <lib/fidl/coding.h>
#include <benchmarkfidl/cpp/fidl.h>
#include <perftest/perftest.h>
#include "data.h"
namespace {
#define BENCHMARK_FOR(Name, Num) \
bool Benchmark##Name##S##Num(perftest::RepeatState* state) { \
while (state->KeepRunning()) { \
const char* bytes = lib_fidl_microbenchmarks::Name##_S_##Num; \
uint32_t num_bytes = sizeof(lib_fidl_microbenchmarks::Name##_S_##Num) - 1; \
ZX_ASSERT(ZX_OK == fidl_validate_string(bytes, num_bytes)); \
} \
return true; \
}
BENCHMARK_FOR(Utf8, 258)
BENCHMARK_FOR(Utf8, 1025)
BENCHMARK_FOR(Utf8, 4098)
BENCHMARK_FOR(Utf8, 16385)
BENCHMARK_FOR(Utf8, 65536)
BENCHMARK_FOR(Ascii, 258)
BENCHMARK_FOR(Ascii, 1025)
BENCHMARK_FOR(Ascii, 4098)
BENCHMARK_FOR(Ascii, 16385)
BENCHMARK_FOR(Ascii, 65536)
void RegisterTests() {
perftest::RegisterTest("LibFIDL/fidl_validate_string/258/WallTime", BenchmarkUtf8S258);
perftest::RegisterTest("LibFIDL/fidl_validate_string/1025/WallTime", BenchmarkUtf8S1025);
perftest::RegisterTest("LibFIDL/fidl_validate_string/4098/WallTime", BenchmarkUtf8S4098);
perftest::RegisterTest("LibFIDL/fidl_validate_string/16385/WallTime", BenchmarkUtf8S16385);
perftest::RegisterTest("LibFIDL/fidl_validate_string/65536/WallTime", BenchmarkUtf8S65536);
perftest::RegisterTest("LibFIDL/fidl_validate_string/ASCII/258/WallTime", BenchmarkAsciiS258);
perftest::RegisterTest("LibFIDL/fidl_validate_string/ASCII/1025/WallTime", BenchmarkAsciiS1025);
perftest::RegisterTest("LibFIDL/fidl_validate_string/ASCII/4098/WallTime", BenchmarkAsciiS4098);
perftest::RegisterTest("LibFIDL/fidl_validate_string/ASCII/16385/WallTime", BenchmarkAsciiS16385);
perftest::RegisterTest("LibFIDL/fidl_validate_string/ASCII/65536/WallTime", BenchmarkAsciiS65536);
}
PERFTEST_CTOR(RegisterTests)
} // namespace