Simple talk. Three types of cost:
- Compile time cost: e.g. introduction of arena based protobuf
- Runtime cost: e.g. unique pointer. It should be copy by value, but doing so actually introduce a temporary variable. Generated machine code quite long. Passing by
&&has double redirect. - Human cost: smaller functions leads to looking up the function back and forth.
I still think compiled language’s near-zero abstraction is pretty good though. Like class method (without vtable) is just accessing that address.