社区
C++ 语言
帖子详情
这段代码,会被优化吗?
Longerandlonger
2010-08-02 09:38:01
vector<char> a, b;
……
size_t len = a.size() > b .size () ? a.size() : b.size();
后面的那句,a、b的size()函数使用了多次,编译器不会愚蠢到每次都去计算吧?会不会产生一个临时变量储存a.size()?
很想知道,编译器到底怎么对代码进行优化的。
...全文
105
7
打赏
收藏
这段代码,会被优化吗?
vector a, b; …… size_t len = a.size() > b .size () ? a.size() : b.size(); 后面的那句,a、b的size()函数使用了多次,编译器不会愚蠢到每次都去计算吧?会不会产生一个临时变量储存a.size()? 很想知道,编译器到底怎么对代码进行优化的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zenny_chen
2010-08-02
打赏
举报
回复
根据这个上下文完全可以被优化掉。
另外,这里三目表达式的分支也能通过带条件的mov——cmov给解决掉。
liutengfeigo
2010-08-02
打赏
举报
回复
[Quote=引用 2 楼 taodm 的回复:]
那个,自己看反汇编吧。
[/Quote]
+1
cd2108006026
2010-08-02
打赏
举报
回复
不会反复计算。
size()是内联的。最多是每次都做个减法运算:storage_end - storage_begin
taodm
2010-08-02
打赏
举报
回复
那个,自己看反汇编吧。
ayw215
2010-08-02
打赏
举报
回复
看看编译出来的汇编呢?
vector的大小是动态可以改变的,最好不要假设编译器帮你做了
ForestDB
2010-08-02
打赏
举报
回复
个人认为最后就是一个return this._size;(有_size这样一个变量,在做各种操作的时候已经更新了_size,在调用size()的时候只要返回它就可以了。)
jackyjkchen
2010-08-02
打赏
举报
回复
一般这种函数都会内联,比如CString的GetLength()也是
普通函数的话,如果打开了类似于VC中/Ob2这样的选项,在编译器认为适合的情况下,也会内联的
不过内联与否并不绝对,如果想精确控制,请自己处理
c语言禁止
优化
某段
代码
,C语言
优化
小技巧
该楼层疑似违规已被系统折叠隐藏此楼查看此楼在编写C语言程序后,经常需要对源码进行
优化
,以提高程序的运行效率,下面简述几个常用的
优化
技巧以供大家参考:1.C于
代码
在程序中的
优化
现在的C编译器
会
自动对
代码
进行
优化
,但这些
优化
是对执行速度和
代码
长度的平衡。如果要获得更小且执行效率更高的
代码
,需要程序员手工对
代码
进行
优化
。2.变量类型的定义不同的数据类型所生成的机器
代码
长度相差很多,变量类型选取的范围越...
c语言保证
代码
不被
优化
,C语言
优化
小技巧
该楼层疑似违规已被系统折叠隐藏此楼查看此楼在编写C语言程序后,经常需要对源码进行
优化
,以提高程序的运行效率,下面简述几个常用的
优化
技巧以供大家参考:1.C于
代码
在程序中的
优化
现在的C编译器
会
自动对
代码
进行
优化
,但这些
优化
是对执行速度和
代码
长度的平衡。如果要获得更小且执行效率更高的
代码
,需要程序员手工对
代码
进行
优化
。2.变量类型的定义不同的数据类型所生成的机器
代码
长度相差很多,变量类型选取的范围越...
编译原理之
代码
优化
代码
优化
定义 并且在中间
代码
到目标
代码
的过程中,许多数据科学家发明了很多可以提高
代码
运行效率的算法,这个就是编译原理中重要的
代码
优化
部分
代码
优化
的分类: 机器无关
优化
:针对中间
代码
机器相关
优化
:针对目标
代码
局部
代码
优化
:单个基本块范围内的
优化
全局
代码
优化
:面向多项基本块的
优化
优化
和变形的目的: 为改进
代码
所进行的等价程序变换,使其运行得更快一些、占用空间更少一些,或者二...
gcc中设置特定
代码
块的
优化
级别
今天碰到一个gcc
优化
相关的问题,为了让一个页变成脏页(页表中dirty位被置上),需要执行下面
这段
代码
: 1 uint32_t *page; 2 // ... 3 page[0] = page[0]; 最后一行
代码
很有可能被gcc
优化
掉,因为
这段
代码
看起来没有任何实际的作用。那么如何防止gcc对
这段
代码
做
优化
呢? 设置gcc编译时
优化
级别为-O0肯定是不合适的,...
代码
优化
措施都有哪些?
1、消除循环 - 顾名思义 尽量减少循环的存在 2、函数
代码
就地扩展 - 扩展函数花费时间相对复杂功能的函数扩展使用的时间来说微不足道,但是一个很简单只有几行的函数每次调用都需要扩展那么所消耗的资源和时间就比较大了,这时可以用C++中提到的内联函数,当编译器编译内联函数时,内联函数内容
会
替换函数调用,以保证在调用时避免函数调用的开销。 3、公共子表达式消除 - 编译器
优化
项,示例如下,想来这也是volatile存在的意义吧 int main() { int a = 2,b=3,c=4; int E =
C++ 语言
64,639
社区成员
250,578
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章