繁体   English   中英

C ++-常量和优化

[英]C++ - constant and optimization

我正在优化应用程序中的一些热点,并使用gcc-arm完成了gcc-arm

现在,以下语句有可能导致不同的汇编代码:

static const pixel_t roundedwhite = 4294572537U;
return (packed >= roundedwhite) ? purewhite : packed;

// OR
const pixel_t roundedwhite = 4294572537U;
return (packed >= roundedwhite) ? purewhite : packed;

// OR
return (packed >= 4294572537U) ? purewhite : packed;

我的ARM编译器是否有可能在第一种情况下生成不需要的代码,还是应该对其进行优化?

我以为它几乎一样,但是,不幸的是,我不确定与普通gcc相比gcc-arm功能如何,并且我无法访问反汇编列表。

非常感谢你。

使用-S标志调用gcc并查看程序集:

-S

在适当的编译阶段后停止; 不要组装。 对于每个指定的非汇编程序输入文件,输出采用汇编程序代码文件的形式。

我会尝试将自己包括在答案中,但是我没有ARM编译器。

唯一的区别是,带有static的第一个版本将占用一些内存,即使该值将在表达式中内联。 如果您想一次计算一个更复杂的表达式然后存储结果,这将是有意义的,但是对于这个简单的常量,静态是不必要的。 就是说,编译器很可能内联该值,因为这是一个非常简单的优化,没有理由不这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM