类型应该有多大才能按引用而不是按值传递
How large should a type be to pass by reference rather than by value?
考虑到移动语义,是否有一种截止值来定义何时通过引用而不是按值传递更昂贵?
我总是看到示例按值使用基本类型,并通过引用class
一些示例。但是如果我有一个小struct
或一个小class
,是否按值而不是引用传递它们更好?
截止点在哪里?
按引用传递基本上是按指针传递(就效率而言)。
指针/引用传递是移动一个机器原生长度的数据(又名:一个字,或 32 位机器上的 32 位等......
因此,按值传递任何小于或等于本机单词的大小数据将与通过指针/引用传递一样有效。
如果你的数据/对象大于此值,则需要多个周期才能将其中的每个单词复制到堆栈。
当数据大小小于一个字时,按值传递不会提高效率。机器将执行一个副本,该副本花费的时间与执行完整单词所需的时间一样长。
相关文章:
- 何时应通过引用传递矢量参数而不是按值传递矢量参数?
- 棘手的按值传递和按引用递归问题传递
- 不同于按值传递和常量引用传递的程序集
- 按值传递变量与按引用传递变量具有相同的结果
- 为什么按值传递QStringView比引用常量更快?
- 获取 std::函数以推断按引用传递/按值传递
- C++/11 auto 关键字是在更有效时推导参数进行按引用传递,还是始终按值传递?
- 使用 enable_if 在按值传递与按引用传递之间更改函数声明
- C++按引用传递还是按值传递?
- 可移动但不可复制的对象:按值传递还是按引用传递?
- 自定义类型转换运算符在转发引用上调用时不起作用(当对象按值传递时有效)
- 按引用或值传递链表对象更好吗?
- C++/ASM:按值传递使用 xmm0,但按引用使用 rdi
- 通过查看程序集来比较按值传递与按引用传递性能
- 通过引用传递基元类型(如 int、bool)是否比按值传递有任何加速?还是会恶化时间/空间的使用
- 按值传递的参数在 Visual Studio 2010, C++ 的调试器中显示为通过引用传递
- 引用成员到构造函数参数按值传递
- 为什么功能程序的规律性允许按值传递和按常量引用传递?
- C++ 不可变的自定义类按引用或值传递
- 为什么按值传递 int 比按引用传递更快