• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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