gpt4 book ai didi

c++ - 评估不同参数的 constexpr 函数时的运行时差异

转载 作者:行者123 更新时间:2023-11-28 04:44:50 25 4
gpt4 key购买 nike

我写了一个简单的递归函数,并添加了一个constexpr标志来指示编译器它可以在编译时计算。当我用两个不同的参数调用这个函数时,我得到了不同的运行时结果。这是为什么?

代码:

constexpr int plusOne(int i)
{
return (i > 0) ? i + plusOne(i - 1) : 0;
}

#include <chrono>
int main() {

auto start = std::chrono::high_resolution_clock::now();
auto finish = std::chrono::high_resolution_clock::now();
start = std::chrono::high_resolution_clock::now();
plusOne(200);
finish = std::chrono::high_resolution_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::nanoseconds>(finish - start).count() << "ns\n";

start = std::chrono::high_resolution_clock::now();
plusOne(100);
finish = std::chrono::high_resolution_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::nanoseconds>(finish - start).count() << "ns\n";

}

输出:

32472ns
3021ns

最佳答案

由于未使用 plusOne 调用的结果,这些调用被完全丢弃,您的示例程序实质上测量了对 high_resolution_clock::now 的第一次调用和后续调用之间的差异。你可以swap arguments and get similar results

关于c++ - 评估不同参数的 constexpr 函数时的运行时差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49463348/

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