[英]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.