为什么按值传递 string_view 比 const 引用更快

why passing string_view by value is faster than const reference

我检查了 this question,大多数答案都说我应该按值传递它,尽管它显然传递了更多数据(因为按值传递 8 个字节,而按引用仅传递 4 个字节,在 32 位系统中 sizeof( string_view) > sizeof(string_view*)) 这在 C++20/17 中仍然相关吗?有人可以准确解释原因吗?

通过引用(以及指针)的间接访问是有成本的。该成本可能超过复制几个字节的成本。在大多数情况下,您需要通过测量来验证这是否适用于您的用例/目标系统。请注意,如果函数是内联扩展的,则不太可能有任何差异,因为在这两种情况下您最终可能会得到相同的程序集。即使不是,差异也可能非常小且难以衡量。