Path: blob/main_old/src/tests/perf_tests/ResultPerf.cpp
1693 views
//1// Copyright 2018 The ANGLE Project Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file.4//5// ResultPerf:6// Performance test for ANGLE's Error result class.7//89#include "ANGLEPerfTest.h"10#include "libANGLE/Error.h"1112volatile int gThing = 0;1314namespace15{16constexpr int kIterationsPerStep = 1000;1718class ResultPerfTest : public ANGLEPerfTest19{20public:21ResultPerfTest();22void step() override;23};2425ResultPerfTest::ResultPerfTest() : ANGLEPerfTest("ResultPerf", "", "_run", kIterationsPerStep) {}2627ANGLE_NOINLINE angle::Result ExternalCall()28{29if (gThing != 0)30{31printf("Something very slow");32return angle::Result::Stop;33}34else35{36return angle::Result::Continue;37}38}3940angle::Result CallReturningResult(int depth)41{42ANGLE_TRY(ExternalCall());43ANGLE_TRY(ExternalCall());44ANGLE_TRY(ExternalCall());45ANGLE_TRY(ExternalCall());46ANGLE_TRY(ExternalCall());47ANGLE_TRY(ExternalCall());48ANGLE_TRY(ExternalCall());49ANGLE_TRY(ExternalCall());50ANGLE_TRY(ExternalCall());51return ExternalCall();52}5354void ResultPerfTest::step()55{56for (int i = 0; i < kIterationsPerStep; i++)57{58(void)CallReturningResult(0);59(void)CallReturningResult(0);60(void)CallReturningResult(0);61(void)CallReturningResult(0);62(void)CallReturningResult(0);63}64}6566TEST_F(ResultPerfTest, Run)67{68run();69}70} // anonymous namespace717273