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_suite()->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 angle::BitSetArray<300>>;
55
56 constexpr char kTestTypeNames[][100] = {"BitSet32_32", "BitSet64_32", "BitSet64_64",
57 "BitSet_96", "BitSetArray_96", "BitSetArray_300"};
58
59 class BitSetIteratorTypeNames
60 {
61 public:
62 template <typename BitSetType>
GetName(int typeIndex)63 static std::string GetName(int typeIndex)
64 {
65 return kTestTypeNames[typeIndex];
66 }
67 };
68
69 TYPED_TEST_SUITE(BitSetIteratorPerfTest, TestTypes, BitSetIteratorTypeNames);
70
TYPED_TEST(BitSetIteratorPerfTest,Run)71 TYPED_TEST(BitSetIteratorPerfTest, Run)
72 {
73 this->run();
74 }
75
76 } // anonymous namespace
77