[PATCH] D129951: [clang] teaches Clang the special ADL rules for functions in std::ranges

Christopher Di Bella via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sat Jul 16 23:30:17 PDT 2022


cjdb added a comment.

Looking at the output from Clang 14 <https://godbolt.org/z/5rjxa5nTT>, I'm observing that a binary with 178 function templates is 13% the size of the one with 89 function objects. When only one function object is used vs all 178 function templates, the functions still win out, with the binary being 80% the size.

The AST also becomes substantially larger.

I ran `time clang++-13 -c file.cpp -std=c++20 -Oz -DNDEBUG` locally, a hundred times, and got the following results:

  # Function objects
  real mean:	0.07447
  real median:	0.074
  real stddev:	0.002267268191
  	
  sys mean:	0.01664
  sys median:	0.016
  sys stddev:	0.005569614534
  	
  user mean:	0.05785
  user median:	0.057
  user stddev:	0.005848896987

  # Function templates
  real mean:	0.06336
  real median:	0.063
  real stddev:	0.002076905235
  	
  sys mean:	0.01701
  sys median:	0.017
  sys stddev:	0.005545942188
  	
  user mean:	0.04645
  user median:	0.047
  user stddev:	0.005678908346


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D129951/new/

https://reviews.llvm.org/D129951



More information about the cfe-commits mailing list