繁体   English   中英

编译器真的可以识别时间复杂度的改进并在幕后实现它们吗?

[英]Can compilers actually recognize time complexity improvements and implement them behind the scenes?

我记得在这里读过一篇关于现代编译器有多好的文章。 该帖子中提供的示例引用了一个与此类似的示例程序:

int sumOfIntegers(int n) {
    return n == 1 ? 1 : n + sumOfIntegers(n-1);
}

他们声称这可以通过现代编译器进行优化。 按原样编写,上述函数的运行时间为 O(n),但此人声称如今的优秀编译器会将其转换为常数时间运算,并认识到整数之和可以通过高斯公式执行 并且会像这样在幕后实现这个功能。

我一直在https://godbolt.org/ 上使用编译器资源管理器,但无法生成在 C++ 中暗示这一点的程序集。 这样的事情真的可能吗? 我找不到原帖,虽然看似合理,但听起来好得令人难以置信。

暂无
暂无

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

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