假设我有两个可能的代码路径。假设它们甚至有明显的不同(即它们返回不同的输出)。我想使用更快的路径。因为我不知道哪一个更快,编译器应该选择它认为更好的一个。我如何告诉编译器为我做这件事?
考虑这个简化的例子:
int F (int i) {
if (this is more likely to be faster in some current environment) {
return i * i;
} else {
return i * 2 + 1;
}
}
两个代码路径都是有效的解决方案。是的,它们返回不同的结果。这很好,只要在程序运行时只选择一个路径。我只是希望编译器选择可能更快的路径。我意识到这是一个不寻常的场景。
我使用的是gcc,clang和msvc,但是任何编译器都可以,只要它支持这种情况。
2条答案
按热度按时间tp5buhyn1#
在您的平台上对不同的版本进行基准测试,然后为特定的版本选择最快的版本,并使用
#if
svmjh9lq92#
您可以使用宏来实现此目的,这些宏由各自操作系统上的编译器定义。通过使用以下代码,仅执行适用于各自操作系统的函数,例如,如果代码在Windows操作系统下执行,
function_for_windows()
将执行ONLY。然后,你可以得出更快的结论。