gpt4 book ai didi

c++ - 依赖于 C++ 的编译器优化

转载 作者:行者123 更新时间:2023-11-30 01:35:11 26 4
gpt4 key购买 nike

<分区>

问题:在编码时依赖编译器优化是否可以?

假设我需要计算 calculateFcalcuateG,它们都取决于 getValue 返回的另一个值。有时我需要这两个值,有时我只需要其中一个值。

// some function
double getValue(double value)
{
double val(0.0);
// do some math with value
return val;
}

// calculateF depends on getValue
double calculateF(double value)
{
double f(0.0);
auto val = getValue(value);
// calculate f which depends on val (and value)
return f;
}

// calculateG depends on getValue
double calculateG(double value)
{
double g(0.0);
auto val = getValue(value);
// calculate g which depends on val (and value)
return g;
}

现在,我可以更优雅地写这个:

std::pair<double,double> calculateFG(double value)
{
auto val = getValue(value);
double f(0.0), g(0.0);
// calculate f and g which depend on val (and value)
return {f,g};
}

如果我想要两个值:

double value(5.3);
auto [f,g] = calculateFG(value); // since C++17
// do things with f and g

如果我只想要 1 个值,比如 f,我只是不使用 g,它将被优化掉。因此,如果我不使用 gcalculateFG 的性能与 calculateF 完全相同。此外,如果我同时需要 fg,我只需要调用一次 getValue 而不是两次。

代码更简洁(只有 1 个函数 calculateFG 而不是 calculateFcalculateG),如果同时使用 f 则速度更快code> 和 g 是必需的。但是依靠编译器优化是一个明智的选择吗?

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