1 //
2 // Copyright 2015 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 // IndexDataManagerPerfTest:
7 // Performance test for index buffer management.
8 //
9
10 #include "ANGLEPerfTest.h"
11
12 #include <gmock/gmock.h>
13
14 #include "common/bitset_utils.h"
15
16 using namespace testing;
17
18 namespace
19 {
20 template <typename T>
21 class BitSetIteratorPerfTest : public ANGLEPerfTest
22 {
23 public:
24 BitSetIteratorPerfTest();
25
26 void step() override;
27
28 T mBits;
29 };
30
31 template <typename T>
BitSetIteratorPerfTest()32 BitSetIteratorPerfTest<T>::BitSetIteratorPerfTest()
33 : ANGLEPerfTest(::testing::UnitTest::GetInstance()->current_test_case()->name(), "", "_run", 1)
34 {}
35
36 template <typename T>
step()37 void BitSetIteratorPerfTest<T>::step()
38 {
39 mBits.flip();
40
41 for (size_t bit : mBits)
42 {
43 ANGLE_UNUSED_VARIABLE(bit);
44 }
45
46 mBits.reset();
47 }
48
49 using TestTypes = Types<angle::BitSet32<32>,
50 angle::BitSet64<32>,
51 angle::BitSet64<64>,
52 angle::BitSet<96>,
53 angle::BitSetArray<96>>;
54
55 constexpr char kTestTypeNames[][100] = {"BitSet32_32", "BitSet64_32", "BitSet64_64", "BitSet_96",
56 "BitSetArray_96"};
57
58 class BitSetIteratorTypeNames
59 {
60 public:
61 template <typename BitSetType>
GetName(int typeIndex)62 static std::string GetName(int typeIndex)
63 {
64 return kTestTypeNames[typeIndex];
65 }
66 };
67
68 TYPED_TEST_SUITE(BitSetIteratorPerfTest, TestTypes, BitSetIteratorTypeNames);
69
TYPED_TEST(BitSetIteratorPerfTest,Run)70 TYPED_TEST(BitSetIteratorPerfTest, Run)
71 {
72 this->run();
73 }
74
75 } // anonymous namespace
76