// // Copyright 2015 The ANGLE 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. // // IndexDataManagerPerfTest: // Performance test for index buffer management. // #include "ANGLEPerfTest.h" #include #include "common/bitset_utils.h" using namespace testing; namespace { template class BitSetIteratorPerfTest : public ANGLEPerfTest { public: BitSetIteratorPerfTest(); void step() override; T mBits; }; template BitSetIteratorPerfTest::BitSetIteratorPerfTest() : ANGLEPerfTest(::testing::UnitTest::GetInstance()->current_test_suite()->name(), "", "_run", 1) {} template void BitSetIteratorPerfTest::step() { mBits.flip(); for (size_t bit : mBits) { ANGLE_UNUSED_VARIABLE(bit); } mBits.reset(); } using TestTypes = Types, angle::BitSet64<32>, angle::BitSet64<64>, angle::BitSet<96>, angle::BitSetArray<96>, angle::BitSetArray<300>>; constexpr char kTestTypeNames[][100] = {"BitSet32_32", "BitSet64_32", "BitSet64_64", "BitSet_96", "BitSetArray_96", "BitSetArray_300"}; class BitSetIteratorTypeNames { public: template static std::string GetName(int typeIndex) { return kTestTypeNames[typeIndex]; } }; TYPED_TEST_SUITE(BitSetIteratorPerfTest, TestTypes, BitSetIteratorTypeNames); TYPED_TEST(BitSetIteratorPerfTest, Run) { this->run(); } } // anonymous namespace