我检查了this question,大多数答案都说我应该按值传递它,尽管它显然传递了更多的数据(因为按值传递了8个字节,而按引用传递了4个字节,在32位系统sizeof(string_view)中> sizeof(string_view *)) 在C ++ 20/17中仍然有用吗?有人可以解释为什么吗?
答案 0 :(得分:4)
通过引用(以及指针)进行间接调用会产生成本。该成本可能大于复制几个字节的成本。与大多数情况一样,您需要通过度量来验证对您的用例/目标系统是否正确。请注意,如果函数是内联展开的,则不会有任何差异,因为在两种情况下,您最终都可以使用相同的程序集。即使没有,差异也可能非常小且难以衡量。