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

Sean Silva via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 29 13:22:53 PST 2016


On Fri, Jan 29, 2016 at 1:13 PM, Xinliang David Li via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> 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++) {
>

Would something like this work?
for (bool DoCompression : {false, true}) ...

-- Sean Silva


> +    // 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);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160129/32253a64/attachment.html>


More information about the llvm-commits mailing list