gpt4 book ai didi

c++ - 编译器是否优化 C++ 中静态值的 if 语句

转载 作者:太空狗 更新时间:2023-10-29 19:44:01 25 4
gpt4 key购买 nike

我正在为拼贴作业开发通用库类,代码尽可能高效地运行非常重要,也就是说,如果我们可以减少 if 语句,我们就应该这样做。

如果数组是基本类型(如 double 或 int),我需要使用以下代码来初始化数组。

T b[dim];
if(std::is_fundemental::<T>::value)
{
memset(b, 0, dim*sizeof(T));
}

现在的问题是这个检查是否被优化,这样它就不会进行运行时检查,或者我是否需要为初始化创建一个模板,并专门针对基本类型?

我将 G++ 与 C++11 一起使用,但它应该能够在大多数(最好是所有)编译器上不检查的情况下运行。

最佳答案

标准没有解决优化问题,但我无法想象一个不会做这种优化的编译器。但是这样做吗真的很重要:你说的最多是一两台机器指令,之后你调用一个函数,它做了很多更多的。正式来说,除了积分外不起作用类型。 (并不是说我听说过有双所有 0 位都不是 0.0。)

但 FWIW:std::uninitialized_fill_n 应该至少一样快,并且您不需要 if,因为它适用于所有类型。

关于c++ - 编译器是否优化 C++ 中静态值的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16563738/

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