gpt4 book ai didi

c++ - 循环内是否有常量函数返回值的优化?

转载 作者:行者123 更新时间:2023-11-30 02:37:17 24 4
gpt4 key购买 nike

<分区>

我的问题专门针对 gcc 编译器。

通常,在一个循环内,我必须使用一个函数返回的值,该值在整个循环期间是恒定的。

我想知道是否最好先将这个常量返回值存储在一个变量中(让我们想象一个长循环),或者像 gcc 这样的编译器是否能够对缓存执行一些优化常量值,因为它会将其识别为常量并抛出循环。

例如,当我遍历字符串中的字符时,我经常会这样写:

bool find_something(string s, char something)
{
size_t sz = s.size();
for (size_t i = 0; i != sz; i++)
if (s[i] == something) return true;
return false;
}

但是有了一个聪明的编译器,我可以使用下面的代码(更短更清楚):

bool find_something(string s, char something)
{
for (size_t i = 0; i != s.size(); i++)
if (s[i] == something) return true;
return false;
}

然后编译器可以检测到循环内的代码没有对 string 对象执行任何更改,然后将构建一个代码来缓存 返回的值。 size(),而不是为每次迭代进行(较慢的)函数调用。

gcc有这样的优化吗?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com