gpt4 book ai didi

C++ 2011 : range-based loop unrolling?

转载 作者:太空狗 更新时间:2023-10-29 23:33:43 26 4
gpt4 key购买 nike

我想知道 C++ 编译器是否会像他们目前对“正常”循环所做的那样展开基于范围的循环以最大化性能,或者在某些情况下基于范围的循环会比正常循环慢?

非常感谢。

最佳答案

基于范围的循环相当于:

{
auto && __range = ( /expression/ );
for (auto __begin = begin(__range),
__end = end(__range);
__begin != __end;
++__begin) {
/declaration/ = *__begin;
/statement/
}
}

如果编译器知道迭代次数并且可以解决循环依赖或循环是独立的,那么编译器可以自由地展开。

一般来说,循环展开只会提高较小循环的性能。因此,IMO,是否展开基于范围的循环并不重要。您当然可以使用 -O3-funroll-loops 以及相关选项进行基准测试,看看两者之间是否确实存在任何差异。

关于C++ 2011 : range-based loop unrolling?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10678419/

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