[llvm-dev] RFC: Improving the performance of ItaniumDemangle (original) (raw)

Scott Smith via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 24 18:02:23 PDT 2017


(Again), while trying to improve the performance of lldb, I ran into a bottleneck with the demangler. This may be specific to my platform - Ubuntu 16.04, probably using libstdc++, not libc++. It makes extensive use of std::string and std::vector, and I see memory allocation at the top. I prototyped a version that uses an arena-style memory allocator (you can allocate, but you can't ever free). It is approximately 14+% faster. I think I can further optimize it by making repeated appends zero-copy (for the string being appended too).

The code right now is a little ugly, because it uses a thread local variable to pass around the arena pointer, rather than change every + and += to be function calls that take db.arena as a parameter. I'm not sure what you guys would prefer for that either (thread local variable vs api change). -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170424/171063dd/attachment.html>



More information about the llvm-dev mailing list