Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关闭内联扩展,但让优化留在那里_C++_Visual Studio_Compiler Construction_Compiler Optimization - Fatal编程技术网

C++ 关闭内联扩展,但让优化留在那里

C++ 关闭内联扩展,但让优化留在那里,c++,visual-studio,compiler-construction,compiler-optimization,C++,Visual Studio,Compiler Construction,Compiler Optimization,在进行性能分析时,我遇到了一个问题,即一些函数没有被检测到,因为编译器将它们作为/Ox优化的一部分进行内联 所以问题是: 如何使用设置/Ob1或/Ob0开关,但让/Ox开关保持打开状态。??? 如图所示,Ox开关自动将Ob开关转到/Ob2 请参阅:From/Ox与: /Obn, where n = 2 /Og /Oi /Os, /O, /Ot /Oy 因此,我建议: /Ob0 /Og /Oi /Os /O /Ot /Oy (当然,如果需要的话,您可以将/Ob0更改为/Ob1)。From/Ox

在进行性能分析时,我遇到了一个问题,即一些函数没有被检测到,因为编译器将它们作为/Ox优化的一部分进行内联

所以问题是: 如何使用设置/Ob1或/Ob0开关,但让/Ox开关保持打开状态。??? 如图所示,Ox开关自动将Ob开关转到/Ob2

请参阅:

From/Ox与:

/Obn, where n = 2
/Og
/Oi
/Os, /O, /Ot
/Oy
因此,我建议:

/Ob0 /Og /Oi /Os /O /Ot /Oy
(当然,如果需要的话,您可以将/Ob0更改为/Ob1)。

From/Ox与:

/Obn, where n = 2
/Og
/Oi
/Os, /O, /Ot
/Oy
因此,我建议:

/Ob0 /Og /Oi /Os /O /Ot /Oy

(当然,如果需要的话,您可以将/Ob0更改为/Ob1)。

如果非内联函数实际上是内联在生产代码中的,您为什么要度量它们?你不会要求乌塞恩·博尔特步行100米,只是为了让他更容易掌握时间。整个问题是确定哪些地方可以提高性能。因此,当一些函数被跳过时…基本函数看起来占用了很多时间,而实际上,内联函数占用的时间最多。这只是一种快速找到所有此类函数的方法。内联版本和非内联版本的函数计时可能有很大不同。如果你不内联任何东西,测量可能是完全错误的。我有一个程序,其中的差值是100倍,你无法从测量值中分辨出任何东西。@KshitijBanerjee:谈论“内联的函数占用的时间最多”是没有意义的。函数内联后,优化器将对内联结果进行另一次传递。这意味着通常一些内联操作被删除,其他操作被混合或更改,等等。这也意味着当您关闭内联时,
/Ox
标志只有一半有效,所以您无法单独测量
/Ox
的全部效果。在我的情况下,不需要精确的时间测量。我们只想找到前10名左右的地方去努力。所以,即使测量可能是错误的,它确实帮助我确定我应该把精力花在哪里。。。在我的例子中,内联函数是代码中最昂贵的函数,它被忽略了很长一段时间,因为它从未在性能分析中被检测到。改进它已经带来了很多改进。如果非内联函数实际上是内联在生产代码中的,为什么要度量它们?你不会要求乌塞恩·博尔特步行100米,只是为了让他更容易掌握时间。整个问题是确定哪些地方可以提高性能。因此,当一些函数被跳过时…基本函数看起来占用了很多时间,而实际上,内联函数占用的时间最多。这只是一种快速找到所有此类函数的方法。内联版本和非内联版本的函数计时可能有很大不同。如果你不内联任何东西,测量可能是完全错误的。我有一个程序,其中的差值是100倍,你无法从测量值中分辨出任何东西。@KshitijBanerjee:谈论“内联的函数占用的时间最多”是没有意义的。函数内联后,优化器将对内联结果进行另一次传递。这意味着通常一些内联操作被删除,其他操作被混合或更改,等等。这也意味着当您关闭内联时,
/Ox
标志只有一半有效,所以您无法单独测量
/Ox
的全部效果。在我的情况下,不需要精确的时间测量。我们只想找到前10名左右的地方去努力。所以,即使测量可能是错误的,它确实帮助我确定我应该把精力花在哪里。。。在我的例子中,内联函数是代码中最昂贵的函数,它被忽略了很长一段时间,因为它从未在性能分析中被检测到。对它的改进带来了很多改进。