首页 > 解决方案 > 为什么按值传递 string_view 比 const 引用快

问题描述

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

标签: c++parameter-passingpass-by-referencepass-by-value

解决方案


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


推荐阅读