nik added a comment. In https://reviews.llvm.org/D45815#1073418, @ilya-biryukov wrote:
> In https://reviews.llvm.org/D45815#1072094, @nik wrote: > > > @ilya: Using SkipFunctionBodies_AllExceptTemplates for the preamble might > > be also useful for clangd. > > > Unfortunately, that's also the biggest performance win you get when skipping > the function bodies. > I.e. most codebases do not have function bodies in headers unless the > function is template. > > Have you measured the performance gain of skipping only non-template > functions, but not skipping the template ones? > Would that really make a significant difference for any real codebase? Here are some rough numbers, based on LIBCLANG_TIMING=1 output: https://dpaste.de/os39/raw Reparses of Qt Creator's texteditor.cpp Without any skipping of function bodies in the preamble: 1.9s Skipping all function bodies in the preamble: 1.0s Skipping all function bodies in the preamble except function template bodies: 1.2s Reparses of Clang's SemaDecl.cpp Without any skipping of function bodies in the preamble: 1.7s Skipping all function bodies in the preamble: 0.59s Skipping all function bodies in the preamble except function template bodies: 0.64s Hmm, that indicates that template function bodies are actually not that dominant, which I also haven't thought. Now I'm doubting the correctness of my patch/tests. I'll recheck this on Tuesday. Until then, you/someone might want to give this also a shot. ================ Comment at: include/clang/Frontend/SkipFunctionBodies.h:18 +enum SkipFunctionBodiesKind { + SkipFunctionBodies_None, + SkipFunctionBodies_All, ---------------- ilya-biryukov wrote: > Maybe make it `enum class` and remove the name prefix from enumerators? > I.e. `enum class SkipFunctionBodiesKind { None, ....` Will do. Repository: rC Clang https://reviews.llvm.org/D45815 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits