all 10 comments

sorted by: hot top controversial new old
[–] 11 points 1 year ago (8 children)

Summary If you want fast compile times, be careful with functions using auto as a return type in header files.

  • source
  • hideshow 8 child comments
  • [–] 3 points 1 year ago (7 children)

    Why the fuck do people do this to themselves.

  • source
  • parent
  • hideshow 7 child comments
  • [+] 5 points 1 year ago (3 children)
  • [–] 3 points 1 year ago (2 children)

    Nuter one of the main reasons for headers: documentation.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 1 year ago (1 child)

    I think you're conflating regular auto use with using it as a return type/argument. The latter is syntactic sugar for declaring a template. It isn't any less "documented" than doing a template<class ReturnType>....

  • source
  • parent
  • hideshow 1 child comment
  • [–] 3 points 1 year ago (1 child)

    From my discussion with C++ folk, auto is just part of the "modern" way of doing c++. Paired with the -> return type. Perhaps including that -> return type negates this problem? It's still strange to me. Feels more like Rust

  • source
  • parent
  • hideshow 1 child comment
  • [–] 7 points 1 year ago

    This is interesting, but drawing conclusions from only two measurements is not reasonable. Especially so when the time-span measured is in the order of a few ms. For example, the two instances of clang might not be running at the same clock frequency, which could easily explain away the observed difference.

    Plus, you could easily generate a very large number of functions, to increase the amount of work the compiler has to do. So I did just that (N = 10,000), using the function from the article, and used hyperfine to perform the actual benchmarking.

    • With int
      Benchmark 1: clang -o /dev/null test.cpp -c
        Time (mean ± σ):      1.243 s ±  0.018 s    [User: 1.192 s, System: 0.050 s]
        Range (min … max):    1.221 s …  1.284 s    10 runs
      
    • With auto
      Benchmark 1: clang -o /dev/null test.cpp -c
        Time (mean ± σ):      1.291 s ±  0.015 s    [User: 1.238 s, System: 0.051 s]
        Range (min … max):    1.274 s …  1.320 s    10 runs
      

    So if you have a file with 10'000 simple functions with/without auto, then it increases your compile time by ~4%.

    I'd worry more about the readability of auto, than about the compile time cost at that point

  • source