[llvm] r259242 - Improve test speed (interchange loop, reducing padding)

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 29 13:13:55 PST 2016


Author: davidxl
Date: Fri Jan 29 15:13:55 2016
New Revision: 259242

URL: http://llvm.org/viewvc/llvm-project?rev=259242&view=rev
Log:
Improve test speed (interchange loop, reducing padding)

Modified:
    llvm/trunk/unittests/ProfileData/InstrProfTest.cpp

Modified: llvm/trunk/unittests/ProfileData/InstrProfTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ProfileData/InstrProfTest.cpp?rev=259242&r1=259241&r2=259242&view=diff
==============================================================================
--- llvm/trunk/unittests/ProfileData/InstrProfTest.cpp (original)
+++ llvm/trunk/unittests/ProfileData/InstrProfTest.cpp Fri Jan 29 15:13:55 2016
@@ -124,6 +124,45 @@ TEST_F(InstrProfTest, get_function_count
   ASSERT_TRUE(ErrorEquals(instrprof_error::unknown_function, EC));
 }
 
+// Profile data is copied from general.proftext
+TEST_F(InstrProfTest, get_profile_summary) {
+  InstrProfRecord Record1("func1", 0x1234, {97531});
+  InstrProfRecord Record2("func2", 0x1234, {0, 0});
+  InstrProfRecord Record3("func3", 0x1234,
+                          {2305843009213693952, 1152921504606846976,
+                           576460752303423488, 288230376151711744,
+                           144115188075855872, 72057594037927936});
+  InstrProfRecord Record4("func4", 0x1234, {0});
+  Writer.addRecord(std::move(Record1));
+  Writer.addRecord(std::move(Record2));
+  Writer.addRecord(std::move(Record3));
+  Writer.addRecord(std::move(Record4));
+  auto Profile = Writer.writeBuffer();
+  readProfile(std::move(Profile));
+
+  ProfileSummary &PS = Reader->getSummary();
+  ASSERT_EQ(2305843009213693952U, PS.getMaxFunctionCount());
+  ASSERT_EQ(2305843009213693952U, PS.getMaxBlockCount());
+  ASSERT_EQ(10U, PS.getNumBlocks());
+  ASSERT_EQ(4539628424389557499U, PS.getTotalCount());
+  std::vector<ProfileSummaryEntry> &Details = PS.getDetailedSummary();
+  uint32_t Cutoff = 800000;
+  auto Predicate = [&Cutoff](const ProfileSummaryEntry &PE) {
+    return PE.Cutoff == Cutoff;
+  };
+  auto EightyPerc = std::find_if(Details.begin(), Details.end(), Predicate);
+  Cutoff = 900000;
+  auto NinetyPerc = std::find_if(Details.begin(), Details.end(), Predicate);
+  Cutoff = 950000;
+  auto NinetyFivePerc = std::find_if(Details.begin(), Details.end(), Predicate);
+  Cutoff = 990000;
+  auto NinetyNinePerc = std::find_if(Details.begin(), Details.end(), Predicate);
+  ASSERT_EQ(576460752303423488U, EightyPerc->MinBlockCount);
+  ASSERT_EQ(288230376151711744U, NinetyPerc->MinBlockCount);
+  ASSERT_EQ(288230376151711744U, NinetyFivePerc->MinBlockCount);
+  ASSERT_EQ(72057594037927936U, NinetyNinePerc->MinBlockCount);
+}
+
 TEST_F(InstrProfTest, get_icall_data_read_write) {
   InstrProfRecord Record1("caller", 0x1234, {1, 2});
   InstrProfRecord Record2("callee1", 0x1235, {3, 4});
@@ -716,20 +755,20 @@ TEST_F(InstrProfTest, instr_prof_symtab_
     FuncNames2.push_back(OS.str());
   }
 
-  for (int Padding = 0; Padding < 10; Padding++) {
-    for (int DoCompression = 0; DoCompression < 2; DoCompression++) {
-      // Compressing:
-      std::string FuncNameStrings1;
-      collectPGOFuncNameStrings(FuncNames1,
-                                (DoCompression != 0 && zlib::isAvailable()),
-                                FuncNameStrings1);
-
-      // Compressing:
-      std::string FuncNameStrings2;
-      collectPGOFuncNameStrings(FuncNames2,
-                                (DoCompression != 0 && zlib::isAvailable()),
-                                FuncNameStrings2);
+  for (int DoCompression = 0; DoCompression < 2; DoCompression++) {
+    // Compressing:
+    std::string FuncNameStrings1;
+    collectPGOFuncNameStrings(FuncNames1,
+                              (DoCompression != 0 && zlib::isAvailable()),
+                              FuncNameStrings1);
+
+    // Compressing:
+    std::string FuncNameStrings2;
+    collectPGOFuncNameStrings(FuncNames2,
+                              (DoCompression != 0 && zlib::isAvailable()),
+                              FuncNameStrings2);
 
+    for (int Padding = 0; Padding < 3; Padding++) {
       // Join with paddings:
       std::string FuncNameStrings = FuncNameStrings1;
       for (int P = 0; P < Padding; P++) {
@@ -743,7 +782,8 @@ TEST_F(InstrProfTest, instr_prof_symtab_
 
       // Now do the checks:
       // First sampling some data points:
-      StringRef R = Symtab.getFuncName(IndexedInstrProf::ComputeHash(FuncNames1[0]));
+      StringRef R =
+          Symtab.getFuncName(IndexedInstrProf::ComputeHash(FuncNames1[0]));
       ASSERT_EQ(StringRef("func_0"), R);
       R = Symtab.getFuncName(IndexedInstrProf::ComputeHash(FuncNames1[1]));
       ASSERT_EQ(StringRef("fooooooooooooooo_0"), R);




More information about the llvm-commits mailing list