gpt4 book ai didi

延迟后的 C++ 优化器调用函数

转载 作者:行者123 更新时间:2023-11-30 03:21:08 25 4
gpt4 key购买 nike

我正在尝试在 C++ 上对递归斐波那契数列计算器进行基准测试。但令人惊讶的是程序输出0纳秒,并在打印结果后开始计算。 (打印0纳秒后CPU使用率增加)

我认为这是编译器的优化特性。

#include <iostream>
#include <chrono>

int fib2(int n) {
return (n < 2) ? n : fib2(n - 1) + fib2(n - 2);
}

int main(int argc, char* argv[])
{
auto tbegin = std::chrono::high_resolution_clock::now();
int a = fib2(50);
auto tend = std::chrono::high_resolution_clock::now();

std::cout << (tend - tbegin).count() << " nanoseconds" << std::endl;

std::cout << "fib => " << a << std::endl;
}

输出:

0 nanoseconds

是功能吗?如果是,我该如何禁用此功能?

最佳答案

问题是用值 50 调用的这个函数的结果不适合 int 类型,它太大了。尝试改用 int64_t


Live demo

请注意,我用更优化的函数替换了原始的斐波那契函数,因为执行时间太长,并且在线工具在一段时间后会中断执行。这不是程序或代码的错误,这只是对在线工具的一种保护。

关于延迟后的 C++ 优化器调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52304690/

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