[llvm-dev] RFC: Improving the performance of ItaniumDemangle

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