xref: /aosp_15_r20/external/angle/src/tests/perf_tests/BitSetIteratorPerf.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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