Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么通过值传递string_view比常量引用更快

为什么通过值传递string_view比常量引用更快
EN

Stack Overflow用户
提问于 2020-10-05 18:16:46
回答 1查看 99关注 0票数 1

我检查了this question,大多数答案说我应该通过值传递它,尽管它显然传递了更多的数据(因为通过值传递8个字节,而通过引用只传递4个字节,在32位系统sizeof(string_view) > sizeof(string_view*)),这在C++20/17中仍然适用吗?有人能解释一下确切的原因吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-05 18:25:13

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64214076

复制
相关文章
值传递与引用传递
“哥,说说 Java 到底是值传递还是引用传递吧?”三妹一脸的困惑,看得出来她被这个问题折磨得不轻。
沉默王二
2021/06/16
1.2K0
值传递与引用传递
值传递和引用传递
  java应用程序有且只有一种参数传递机制,即按值传递。   按值传递:当将一个参数传递给一个函数的时候,函数接收的是原始值的一个副本,因此,如果函数修改了该参数,仅仅修改的是参数的副本,而原始值保持不变。按引用传递一位置当一个参数传递给一个函数的时候,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。   1.对象是按照引用传递;   2.java中仅存在一种参数传递机制,即按值传递;   3.按值传递意味着当一个参数传递给一个函数的时候,函数接收
Mister24
2018/05/14
1.6K0
按值传递还是引用传递?
改变u的指向不会影响user,但如果改变u指向实例的内容name,那么就会影响到user了
晚上没宵夜
2020/05/06
1.1K0
Java值传递与引用传递
Java面试题: 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?   答案基本上是:值传递 说明:得出这种结论的前提必须是
阳光岛主
2019/02/19
1.1K0
Java 引用传递和值传递
这个问题的关键在于 a,b,x,y 的地址指向; y = x 与 b = a 是不等价的!! 发生改变的是 y 指向的值变成了和 x 指向的相同, 此时 y = AB(因为append方法改变的x原有的值) 而此时 b 的指向并没有发生改变。
星尘的一个朋友
2020/11/25
1.2K0
java — 值传递和引用传递
  在 Java 应用程序中永远不会传递对象,而只传递对象引用。因此是按引用传递对象。Java 应用程序按引用传递对象这一事实并不意味着 Java 应用程序按引用传递参数。参数可以是对象引用,而 Java 应用程序是按值传递对象引用的。   Java 应用程序中的变量可以为以下两种类型之一:引用类型或基本类型。当作为参数传递给一个方法时,处理这两种类型的方式是相同的。两种类型都是按值传递的;没有一种按引用传递。  java实际上只有值传递,没有真正意义上的引用传递。 按值传递意味着当将一个参数传递给一
Mister24
2018/05/14
1.5K0
js引用传递和值传递
相反,情况是传入的项是按值传递的。但是通过值传递的项本身就是一个引用。从技术上讲,这叫做call_by_sharing。
IT工作者
2022/01/17
7.2K0
引用,指针,值传递
其中运用了指针,引用进行数互换,但是它们所执行完的效果却是不一样的。 通过观察发现,引用传递和按值传递的形式类似,只能从它对于函数的定义里才能看出区别。 引用和指针成功交换了wallet里的内容,值传递却没能完成这个任务。在引用传递中,a,b是wallet1,wallet2的别名,值传递,a,b是复制了wallet1和wallet2里面的内容,因此交换a,b就不会影响实参的值。
用户8247415
2021/04/13
4730
java——值传递和引用传递
我们可以看到valueCross方法执行后,实参age和weight的值并没有发生变化,这是什么原因?
说故事的五公子
2019/09/11
1.2K0
java——值传递和引用传递
[Introduction]Go特殊的引用类型:值传递/指针传递/引用传递
变量名本身并没有作用,只相当于代号利于程序员编程,引用作为别名本质上还是指向同一个内存地址。指针本质上占用一小段内存空间
Wzy_CC
2020/08/10
1.6K0
指针值传递、地址传递和引用传递
执行结果中并未输出字符串hello其实这里主函数调用fun函数,形参向实参传递参数的时候,发生的是拷贝。在fun函数中对局部指针变量p的任何修改都不会影响到主函数中的指针变量p。 下面简单的用函数栈帧空间图分析一下:
lexingsen
2022/02/24
1.7K0
指针值传递、地址传递和引用传递
细说值传递、引用传递和地址传递
形式参数:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。
闫同学
2023/10/14
2400
Java 02 - 值传递与引用传递
首先我们要知道, 值传递和引用传递是一种求值策略(Evaluation Stragtegy), 表示的是调用函数的时候, 对于参数传递方式的描述, 而不是对参数本身类型的描述. 值类型和引用类型是两种内存分配方式, 值类型是在调用栈上分配, 而引用类型是在堆上分配. 一个是描述的内存分配方式, 一个是描述参数求值策略, 二者并无依赖和约束关系.
Reck Zhang
2021/08/11
7620
String是值传递还是引用传递
今天上班时,同事发现了一个比较有意思的问题。他把一个String类型的参数传入方法,并在方法内改变了引用的值。 然后他在方法外使用这个值,发现这个String还是之前的值,并没有改变。
小忽悠
2018/09/04
9720
Java是值传递还是引用传递?
代码很简单,图一中调用静态方法IntValues(int t),毫无疑问是传递值,因为如果是引用传递,那么二者打印的值是一致的。很明显,a--之后,t的值没有发生改变。
萬物並作吾以觀復
2018/09/13
1.3K0
Java是值传递还是引用传递?
JavaScript 按值传递 & 按引用传递
其次,对象的比较并非值的比较:对象的比较均是引用的比较,当且仅当它们引用同一个基对象时,它们才相等。     即使两个对象包含同样的属性和相同的值,它们也是不相等的。各个索引元素完全相等的两个数组也不相等
书童小二
2018/09/03
3.8K0
Java 参数传递是值传递还是引用传递?
首先把结论表明,Java 的参数传递是值传递,因为有部分细节让人引起误解以为是引用传递,故我们写两个例子来举例探讨。
萬物並作吾以觀復
2019/05/10
2.8K0
java中的参数传递-值传递、引用传递
参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递。
chenchenchen
2022/11/29
4.7K0
java中的参数传递-值传递、引用传递
Java-值传递和值引用
参考:https://mp.weixin.qq.com/s/Qp6Cc0mlRLnrToNy5-3zeg java的值传递和值引用是一个普通但重要的内容,今天我们依次来了解一下。
android_薛之涛
2019/01/03
1.7K0
浅析按值传递与按引用传递
下列关于按值传递与按引用传递的描述中,正确的是( )。A.按值传递不会改变实际参数的数值 B.按引用传递能改变实际参数的参考地址C.按引用传递能改变实际参数的内容 D.按引用传递不能改变实际参数的参考地址
田维常
2019/12/17
1.2K0

相似问题

为什么通过常量引用传递而不是通过值传递?

82

为什么按值传递QStringView比引用到const更快?

21

为什么有时通过值传递比通过引用传递更好

145

如何通过值或引用传递std::string_view

10

RWCString -通过值或常量引用传递

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文