diff options
author | Raman Tenneti <rtenneti@google.com> | 2019-09-26 17:54:33 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-09-26 17:54:33 +0000 |
commit | 0878ac991af7b784b3d61f406b73d33703d56fed (patch) | |
tree | 51aa6f0b1f6d115afdf86d22a57483c20d7e3867 /benchmarks/spawn/spawn_benchmarks.cpp | |
parent | 6ebeaac69db83624e14f96f0345ceae350e87c0e (diff) | |
parent | 3bf27c86d1327a5a66bf06af07027c4f1a37d358 (diff) |
Merge "Revert "Add benchmarks that run simple programs""
Diffstat (limited to 'benchmarks/spawn/spawn_benchmarks.cpp')
-rw-r--r-- | benchmarks/spawn/spawn_benchmarks.cpp | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/benchmarks/spawn/spawn_benchmarks.cpp b/benchmarks/spawn/spawn_benchmarks.cpp deleted file mode 100644 index e8f7c1792..000000000 --- a/benchmarks/spawn/spawn_benchmarks.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <errno.h> -#include <spawn.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <sys/wait.h> -#include <unistd.h> - -#include <android-base/file.h> -#include <android-base/stringprintf.h> -#include <benchmark/benchmark.h> - -static std::string test_program(const char* name) { -#if defined(__LP64__) - return android::base::GetExecutableDirectory() + "/" + name + "64"; -#else - return android::base::GetExecutableDirectory() + "/" + name + "32"; -#endif -} - -extern char** environ; - -static void BM_spawn_test(benchmark::State& state, const char* const* argv) { - for (auto _ : state) { - pid_t child = 0; - if (int spawn_err = posix_spawn(&child, argv[0], nullptr, nullptr, const_cast<char**>(argv), - environ)) { - state.SkipWithError(android::base::StringPrintf( - "posix_spawn of %s failed: %s", argv[0], strerror(spawn_err)).c_str()); - break; - } - - int wstatus = 0; - const pid_t wait_result = TEMP_FAILURE_RETRY(waitpid(child, &wstatus, 0)); - if (wait_result != child) { - state.SkipWithError(android::base::StringPrintf( - "waitpid on pid %d for %s failed: %s", - static_cast<int>(child), argv[0], strerror(errno)).c_str()); - break; - } - if (WIFEXITED(wstatus) && WEXITSTATUS(wstatus) == 127) { - state.SkipWithError(android::base::StringPrintf("could not exec %s", argv[0]).c_str()); - break; - } - } -} - -#define SPAWN_BENCHMARK(name, ...) \ - BENCHMARK_CAPTURE(BM_spawn_test, name, (const char*[]) { __VA_ARGS__, nullptr }) \ - ->UseRealTime() \ - ->Unit(benchmark::kMicrosecond) \ - -SPAWN_BENCHMARK(noop, test_program("bench_noop").c_str()); -SPAWN_BENCHMARK(noop_nostl, test_program("bench_noop_nostl").c_str()); -SPAWN_BENCHMARK(noop_static, test_program("bench_noop_static").c_str()); - -// Android has a /bin -> /system/bin symlink, but use /system/bin explicitly so we can more easily -// compare Bionic-vs-glibc on a Linux desktop machine. -#if defined(__GLIBC__) - -SPAWN_BENCHMARK(bin_true, "/bin/true"); -SPAWN_BENCHMARK(sh_true, "/bin/sh", "-c", "true"); - -#elif defined(__ANDROID__) - -SPAWN_BENCHMARK(system_bin_true, "/system/bin/true"); -SPAWN_BENCHMARK(vendor_bin_true, "/vendor/bin/true"); -SPAWN_BENCHMARK(system_sh_true, "/system/bin/sh", "-c", "true"); -SPAWN_BENCHMARK(vendor_sh_true, "/vendor/bin/sh", "-c", "true"); - -#endif - -BENCHMARK_MAIN(); |