constexpr表达式在计算过程中的优势

constexpr(常量表达式):指值不会改变并且在编译过程就能得到计算结果的表达式。

常量表达式的优点是将计算过程转移到编译时期,那么运行期就不再需要计算了,这样一来,程序的性能也就提升了。

以下程序演示了,进行相同的1百万次计算,使用与不使用constexpr表达式的时间差距

#include <iostream>
#include <time.h>
using namespace std;

constexpr int add1(int x, int y)
{
    
    
    return x + y;
}

int add2(int x, int y)
{
    
    
    return x + y;
}

int main()
{
    
    
    // 1百万次计算,使用与不使用constexpr表达式的时间差距
    clock_t start, finish;

    start = clock();
    for (int i = 0; i < 1000000; i++)
    {
    
    
        constexpr int ret = add1(100, 200); // constexpr
    }
    finish = clock();
    printf("use constexpr : %f seconds\n", (double)(finish - start) / CLOCKS_PER_SEC);

    start = clock();
    for (int i = 0; i < 1000000; i++)
    {
    
    
        int ret = add2(100, 200); // not const
    }
    finish = clock();
    printf("not constexpr : %f seconds\n", (double)(finish - start) / CLOCKS_PER_SEC);
    return 0;
}

程序输出:
在这里插入图片描述
很显然,在可以将表达式声明为常量表达式的前提下,会在执行期间省掉很多时间。

对于需要高并发的业务来说,这无疑是一个值得考虑的优化的地方。

谢谢阅读。

猜你喜欢

转载自blog.csdn.net/weixin_43869898/article/details/109741934