小数据类型如 int、float、pointer 直接传值比传递引用更快、更安全、代码更简洁,只有大对象如vector、mat、结构体、string等才需要传递引用(const t&)下面介绍
小数据类型如 int、float、pointer 直接传值比传递引用更快、更安全、代码更简洁,只有大对象如vector、mat、结构体、string等才需要传递引用(const t&)
下面介绍其核心原因:
先看大小
- float:4个字节
- 引用:本质上是指针,在64为系统中占用8个字节
- 结论:穿float比传递引用更快、更省空间
传值更快
cpu处理小数据时的做法(如int、float):
1. 直接放进寄存器
2. 0内存访问
3. 速度极快
如果传递引用:
1. cpu必须去内存读取指针
2. 解引用
3. 多一次间接访问,相比之下更慢
工业级规则
* 小于等于8字节的类型,一律传值
* 大于8字节的类型,一律传递 const &
最终工业级铁律
1. int/float/double/指针:直接传值,不需要 &,不需要 const &
2. vector/mat/大结构体/string:必须传递 const &,禁止传值,会拷贝,慢,费内存
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
相关文章:
-
深入理解C++中的虚函数机制
多态要了解虚函数机制,首先要了解多态。多态是指同一方法调用在不同对象上表现出不同的行为。它是面向对象编程的核心特性之一。c++中的多态性包含静态多态、动态多态。...
[阅读全文]
-
前期概要使用vs code连接wsl经常性出现终端和ide卡住无法使用,关闭vs后即正常。根本原因cpptools 吃内存 = "全量符号索引常驻" &time…
-
前期概要vs code 连接 wsl 远程开发,c/c++ cpptools 插件容易终端卡顿,内存耗尽。差异区别clangd:增量索引 + 后台索引(--background-i…
-
-
-
深入理解C++ 大小端字节序
这个话题应该不属于c++,但是我们用c++编程经常会用到。本人做为一个软件工程师,曾经在调试的过程中遇到过大小端的bug。这个是工程中常见,但是不易察觉的bug...
[阅读全文]
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论