sgraenitz marked an inline comment as done. sgraenitz added a comment. I did a little investigation of the performance impact of not reusing the IPD. For this I used the unit test `PartialDemangleTest.TestNameChopping`, where I added an outer loop:
TEST(PartialDemangleTest, TestNameChopping) { ... llvm::ItaniumPartialDemangler IPD; for (int i = 0; i < (1 << 20); ++i) { // 1M repetitions for (ChoppedName &N : NamesToTest) { EXPECT_FALSE(IPD.partialDemangle(N.Mangled)); EXPECT_TRUE(IPD.isFunction()); EXPECT_FALSE(IPD.isData()); ... Then I compared runtimes when having IPD outside vs. inside the two for loops. Over a series of test runs, the average inside-the-loops overhead is around 10% here. Just for interest I then raised the initial buffer size from 4k to 1M. This obviously has a much bigger impact on the runtimes: IPD outside IPD inside IPD inside (1MB) real 0m10.626s 0m11.769s 0m32.064s user 0m10.474s 0m11.601s 0m27.526s sys 0m0.082s 0m0.091s 0m4.394s I think today's heap implementations are pretty good in allocating 4k chunks of memory. Nevertheless, in the next step we should try and avoid this overhead. This may require conceptual changes though. I send a comprehensive proposal to the dev list for discussion. https://reviews.llvm.org/D49612 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits