[PATCH] D16726: [Profiling] Speed up unittests by ~5x
Vedant Kumar via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 29 17:00:50 PST 2016
vsk updated this revision to Diff 46453.
vsk added a comment.
Address some of @dblaikie's concerns:
- Only test `doCompression = true`.
- Move away from a statistical approach.
http://reviews.llvm.org/D16726
Files:
unittests/ProfileData/InstrProfTest.cpp
Index: unittests/ProfileData/InstrProfTest.cpp
===================================================================
--- unittests/ProfileData/InstrProfTest.cpp
+++ unittests/ProfileData/InstrProfTest.cpp
@@ -711,73 +711,26 @@
}
TEST_P(MaybeSparseInstrProfTest, instr_prof_symtab_compression_test) {
- std::vector<std::string> FuncNames1;
- std::vector<std::string> FuncNames2;
- for (int I = 0; I < 10 * 1024; I++) {
- std::string str;
- raw_string_ostream OS(str);
- OS << "func_" << I;
- FuncNames1.push_back(OS.str());
- str.clear();
- OS << "fooooooooooooooo_" << I;
- FuncNames1.push_back(OS.str());
- str.clear();
- OS << "BAR_" << I;
- FuncNames2.push_back(OS.str());
- str.clear();
- OS << "BlahblahBlahblahBar_" << I;
- FuncNames2.push_back(OS.str());
- }
-
- for (bool DoCompression : {false, true}) {
- // Compressing:
- std::string FuncNameStrings1;
- collectPGOFuncNameStrings(
- FuncNames1, (DoCompression && zlib::isAvailable()), FuncNameStrings1);
-
- // Compressing:
- std::string FuncNameStrings2;
- collectPGOFuncNameStrings(
- FuncNames2, (DoCompression && zlib::isAvailable()), FuncNameStrings2);
-
- for (int Padding = 0; Padding < 3; Padding++) {
- // Join with paddings:
- std::string FuncNameStrings = FuncNameStrings1;
- for (int P = 0; P < Padding; P++) {
- FuncNameStrings.push_back('\0');
- }
- FuncNameStrings += FuncNameStrings2;
-
- // Now decompress:
- InstrProfSymtab Symtab;
- Symtab.create(StringRef(FuncNameStrings));
-
- // Now do the checks:
- // First sampling some data points:
- 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);
- R = Symtab.getFuncName(IndexedInstrProf::ComputeHash(FuncNames1[998]));
- ASSERT_EQ(StringRef("func_499"), R);
- R = Symtab.getFuncName(IndexedInstrProf::ComputeHash(FuncNames1[999]));
- ASSERT_EQ(StringRef("fooooooooooooooo_499"), R);
- R = Symtab.getFuncName(IndexedInstrProf::ComputeHash(FuncNames2[100]));
- ASSERT_EQ(StringRef("BAR_50"), R);
- R = Symtab.getFuncName(IndexedInstrProf::ComputeHash(FuncNames2[101]));
- ASSERT_EQ(StringRef("BlahblahBlahblahBar_50"), R);
- for (int I = 0; I < 10 * 1024; I++) {
- std::string N[4];
- N[0] = FuncNames1[2 * I];
- N[1] = FuncNames1[2 * I + 1];
- N[2] = FuncNames2[2 * I];
- N[3] = FuncNames2[2 * I + 1];
- for (int J = 0; J < 4; J++) {
- StringRef R = Symtab.getFuncName(IndexedInstrProf::ComputeHash(N[J]));
- ASSERT_EQ(StringRef(N[J]), R);
- }
- }
- }
+ if (!zlib::isAvailable())
+ return;
+
+ std::string NamesStr;
+ std::vector<std::string> Names = {"foo", "bar", "baz"};
+ collectPGOFuncNameStrings(Names, /*doCompression=*/ true, NamesStr);
+
+ for (int Padding = 0; Padding < 3; Padding++) {
+ // Join with padding:
+ std::string NamesStrPadded = NamesStr;
+ NamesStrPadded.resize(NamesStr.size() + Padding, '\0');
+
+ // Now decompress the function names:
+ InstrProfSymtab Symtab;
+ Symtab.create(StringRef(NamesStrPadded));
+
+ // Check that we get the function names back:
+ for (unsigned I = 0; I < Names.size(); ++I)
+ ASSERT_EQ(StringRef(Names[I]),
+ Symtab.getFuncName(IndexedInstrProf::ComputeHash(Names[I])));
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D16726.46453.patch
Type: text/x-patch
Size: 3579 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160130/e657fcba/attachment.bin>
More information about the llvm-commits
mailing list