ilya-biryukov added a comment. Here are some numbers from running `clang -cc1 -Eonly` on `SemaExpr.cpp`, it includes a whole ton of headers, including a rather large `TreeTransform.h`. This was run on my machine, so keep in mind it's rather noisy. Minimal times should be somewhat representative, though.
Before: Time (mean ± σ): 159.5 ms ± 7.3 ms [User: 137.3 ms, System: 22.1 ms] Range (min … max): 148.9 ms … 199.5 ms 100 runs After (no callback specified): Time (mean ± σ): 165.0 ms ± 7.5 ms [User: 142.8 ms, System: 22.2 ms] Range (min … max): 155.0 ms … 196.7 ms 100 runs And two more measurements with callbacks non-empty callbacks: Counting tokens: Time (mean ± σ): 169.0 ms ± 9.5 ms [User: 147.3 ms, System: 21.7 ms] Range (min … max): 158.3 ms … 206.0 ms 100 runs Saving tokens to a vector: Time (mean ± σ): 191.0 ms ± 5.5 ms [User: 154.1 ms, System: 36.8 ms] Range (min … max): 180.4 ms … 221.0 ms 100 runs Overall, the performance cost in empty-callback case seems to be lower than `5%`. This is significant, but hopefully acceptable. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D59885/new/ https://reviews.llvm.org/D59885 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits