mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-07 01:06:46 +08:00
random / rand is slow and impacts performance testing. Although its only called to clear a frame once, a typical profile shows it high in the overall profile, when doing 1000 frames for a benchmark. 95.10% libyuv_unittest libyuv_unittest [.] YUY2ToARGBRow_SSSE3 2.01% libyuv_unittest libc-2.19.so [.] __random_r 1.13% libyuv_unittest libc-2.19.so [.] __random Replace random is a faster version for unittests. set LIBYUV_WIDTH=1280 set LIBYUV_HEIGHT=720 set LIBYUV_REPEAT=999 set LIBYUV_FLAGS=-1 out\release\libyuv_unittest --gtest_filter=*YUY2ToARGB* | findms Was libyuvTest.YUY2ToARGB_Opt (497 ms) Now libyuvTest.YUY2ToARGB_Opt (454 ms) R=harryjin@google.com BUG=none Review URL: https://codereview.chromium.org/1361813002 .
62 lines
2.1 KiB
C++
62 lines
2.1 KiB
C++
/*
|
|
* Copyright 2011 The LibYuv Project Authors. All rights reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#include "../unit_test/unit_test.h"
|
|
|
|
#include <stdlib.h> // For getenv()
|
|
|
|
#include <cstring>
|
|
|
|
// Change this to 1000 for benchmarking.
|
|
// TODO(fbarchard): Add command line parsing to pass this as option.
|
|
#define BENCHMARK_ITERATIONS 1
|
|
|
|
int fastrand_seed = 0xfb;
|
|
|
|
libyuvTest::libyuvTest() : rotate_max_w_(128), rotate_max_h_(128),
|
|
benchmark_iterations_(BENCHMARK_ITERATIONS), benchmark_width_(128),
|
|
benchmark_height_(72), disable_cpu_flags_(0) {
|
|
const char* repeat = getenv("LIBYUV_REPEAT");
|
|
if (repeat) {
|
|
benchmark_iterations_ = atoi(repeat); // NOLINT
|
|
// For quicker unittests, default is 128 x 72. But when benchmarking,
|
|
// default to 720p. Allow size to specify.
|
|
if (benchmark_iterations_ > 1) {
|
|
benchmark_width_ = 1280;
|
|
benchmark_height_ = 720;
|
|
}
|
|
}
|
|
const char* width = getenv("LIBYUV_WIDTH");
|
|
if (width) {
|
|
benchmark_width_ = atoi(width); // NOLINT
|
|
}
|
|
const char* height = getenv("LIBYUV_HEIGHT");
|
|
if (height) {
|
|
benchmark_height_ = atoi(height); // NOLINT
|
|
}
|
|
const char* cpu_flags = getenv("LIBYUV_FLAGS");
|
|
if (cpu_flags) {
|
|
disable_cpu_flags_ = atoi(cpu_flags); // NOLINT
|
|
}
|
|
benchmark_pixels_div256_ = static_cast<int>((
|
|
static_cast<double>(Abs(benchmark_width_)) *
|
|
static_cast<double>(Abs(benchmark_height_)) *
|
|
static_cast<double>(benchmark_iterations_) + 255.0) / 256.0);
|
|
benchmark_pixels_div1280_ = static_cast<int>((
|
|
static_cast<double>(Abs(benchmark_width_)) *
|
|
static_cast<double>(Abs(benchmark_height_)) *
|
|
static_cast<double>(benchmark_iterations_) + 1279.0) / 1280.0);
|
|
}
|
|
|
|
int main(int argc, char** argv) {
|
|
::testing::InitGoogleTest(&argc, argv);
|
|
return RUN_ALL_TESTS();
|
|
}
|