社区
C++ 语言
帖子详情
VS2017怎么触发NRV优化?
qq_40162781
2020-04-22 02:41:08
VS2017怎么触发NRV优化?
...全文
319
6
打赏
收藏
VS2017怎么触发NRV优化?
VS2017怎么触发NRV优化?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qq_40162781
2020-04-23
打赏
举报
回复
引用 4 楼 真相重于对错 的回复:
另外,拷贝构造函数的存在并不是为了什么效率,而是正确性,以避免需要深拷贝的地方施行了浅拷贝。
对,所以我问的是不是已经不支持这样触发了,或是改变了触发方式
真相重于对错
2020-04-23
打赏
举报
回复
另外,拷贝构造函数的存在并不是为了什么效率,而是正确性,以避免需要深拷贝的地方施行了浅拷贝。
真相重于对错
2020-04-23
打赏
举报
回复
C艹标准中对你所说的优化明确规定非强制。所以编译器怎么都是对的。
sdghchj
2020-04-23
打赏
举报
回复
release编译
qq_40162781
2020-04-22
打赏
举报
回复
引用 1 楼 真相重于对错 的回复:
我的意思是使用拷贝构造函数触发的NRV优化 但是我使用vs2017并没进行优化 下面是我执行的代码,还是走了拷贝构造函数 所以性能比不实现拷贝构造函数的bitwise copy更差了 class test { friend test foo(double); public: test(const test &rhs) { cout << "copy constructor" << endl; memcpy(this, &rhs, sizeof(test)); } test() { memset(array, 0, 100 * sizeof(double)); } private: double array[100]; }; test foo(double val) { test local; local.array[0] = val; local.array[99] = val; return local; } int main() { for (int cnt = 0; cnt < 10000000; cnt++) { test t = foo(double(cnt)); } return 0; } vs2005 release好像可以触发NRV优化,现在版本是不是不支持了?
真相重于对错
2020-04-22
打赏
举报
回复
以一个临时变量构造一个对象,自动触发啊? 你是什么意思
GCC编译器下
NRV
优化
关于
NRV
优化
的相关测试以及思考
Q&A.深度探索C++对象模型(读书笔记)
1、为什么要有显式复制构造函数才能
触发
NRV
优化
? cfront编译器有一个开关机制,若检测到没有显式的复制构造函数,则判断程序员对bitwise效率满意,不用进行
NRV
优化
,反之则进行
NRV
进行
优化
。Visual c++和g++等...
关于
NRV
优化
详细分析
(注意:我尝试把Vector的拷贝构造函数删掉,同样生成了上面这段代码(一个字节都没变),因此我推测,拷贝构造函数并不是
触发
NRV
优化
的条件了,Lippman的书可能有点过时了。) 但是这样带来的坏处是,如果你在...
理解
NRV
优化
NRV
优化
触发
的疑问。 一、函数返回局部对象的拷贝的一般实现方式 比如有这么一段函数定义: class X; X bar() { X x1; // 处理 x1.. return x1; } 在学习C++语法时,我们知道了。针对”Xbar()...
NRV
优化
详解
原文地址 http://blog.csdn.net/zha_1525515/article/details/7170059 ...
NRV
优化
触发
的疑问。 一、函数返回局部对象的拷贝的一般实现方式 比如有这么一段函数定义: [c
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章