有没有办法告诉编译器不优化代码的选择部分? 我知道你可以告诉编译器不要使用volatile来优化某些变量但是整个代码块呢?

===============>>#1 票数:8 已采纳

在大多数情况下,是的,但确切的方法取决于您的特定编译器。

通常它会是这样的:

#pragma optimize(off)

任何与优化器相关的东西都完全超出了标准的范围。 标准所扮演的唯一部分是强制执行行为,但编译器可以执行任何不违反所需行为的优化,或者根本不执行任何优化。

g ++的文档:

MS Visual C ++文档(一旦到达,选择版本):

  ask by John Wang translate from so

未解决问题?本站智能推荐:

4回复

我的C ++编译器是否优化了我的代码?

在使用现代C ++编译器(包括MSVC,GCC,ICC)时,我怎么说它是否有: 并行化代码 矢量化循环(或使用其他特定的处理器指令) 展开循环 检测到尾递归 执行RVO(返回值优化) 或以其他方式优化 没有深入编译器产生的汇编代码?
7回复

c ++:编译器能否优化此代码段?

对于外循环的每次执行,都检查“常量”的值。 但是,常量永远不会改变,所以浪费了大量的CPU时间来测试条件常数<10? 一遍又一遍地。 人类会在前几次传球后意识到常数永远不变,并且智能地避免一遍又一遍地检查它。 编译器是否注意到这一点并对其进行智能优化,或者重复if循环是否不可避免
12回复

C ++中的常量和编译器优化

我已经阅读了关于C ++中const-correctness的所有建议,并且它(部分)很重要,因为它有助于编译器优化代码。 我从未见过的是关于编译器如何使用这些信息来优化代码的一个很好的解释,甚至连好书都没有解释幕后发生的事情。 例如,编译器如何优化声明为const的方法与不应该但应该是
2回复

intel C ++编译器是否优化了代码中从未调用过的函数?

只是一些优化考虑因素: 有没有人知道它是否确定intel C ++编译器(例如ICC 13.0,以及原因,使用某些优化选项编译,如/ O3等)将自动优化代码中的任何未使用/未调用的结构/类/函数/变量,例如examplefun ()如下:
3回复

C ++:编译器以多种方式优化我们的代码?

。 我想知道编译器可以/可以优化我们用C ++编写的代码的所有可能方法(或至少是流行的方法)? 我也想知道优化是如何完成的(在每种情况下)! 到目前为止,我知道两个优化,即。 空基优化(EBO)和返回值优化(RVO)。 还有什么? 我听说过“ const”优化,“未使用变量”
3回复

C / C ++编译器反馈优化

有没有人看到使用C / C ++编译器提供的反馈优化来支持分支预测,缓存预加载等功能的不同程序的任何实际数字。 我搜索了它,令人惊讶的是,即使是流行的翻译开发小组似乎都没有检查过这种效果。 并且将ruby,python,php等性能提高10%左右应该被认为是有用的。 真的没有任何好
7回复

C / C ++编译器会优化此if语句吗?

我有这样的代码,我觉得很难读: 我只是将其更改为以下内容,以使其更具可读性: 但是我现在应该关注效率吗? 我的意思是,在code1 ,如果第一个连接子句得到满足,那么即使看第二个连接子句也不会费心,因为已经很清楚该语句是正确的。 但是在我更具可读性的示例中,必须同时计
1回复

C ++编译器或链接器优化

我正在尝试使用类映射创建一个自动加载类系统,如本文最佳回答: 有没有办法从持有类名的字符串中实例化对象? 所以我根据自己的需要创建了这段代码: 当然我已经在foo类和foo.cpp文件底部定义了REGISTER_DEC_TYPE我放了:REGISTER_DEF_TYPE(fo
5回复

传递参数的C ++编译器优化

我正在使用一个可以在运行时启用/禁用报告的日志记录模块。 电话通常类似于: 我正在使用WARN的内联函数,但我很好奇在幕后进行了多少优化 - 在整个程序中对参数的评估将是昂贵的。 WARN函数是这样的: 鉴于构造字符串参数没有副作用,编译器会优化它吗? 是否需要一定程度的优
4回复

使用速记IF的C ++编译器优化

我在考虑关于精简if / else时优化编译器的问题。 我有这个功能: 我想知道什么更有效? 要么 在前一种情况下,编译器(在我的情况下为GCC 4.6.2)是否知道如何优化if / else以保持eucl_distance()的返回值可重复使用,而不是对其进行两次