Visual Studio中的条件优化
Conditional optimization in Visual Studio
我有一个这样的代码:
void f()
{
//Some function I want to debug
g();
//More code
}
void g()
{
//A very slow function I want to have optimized for performance
//No debugging this code
}
其中f是我代码中要调试的任何函数,而g则是计算密集型函数。
当我使用Release配置编译代码时,两段代码都会得到优化,并且都会在合理的时间内运行,但当我使用Debug设置编译时,g执行时间太长,因为编译器没有优化代码以保持对调试器友好。
从调试的角度来看,我不需要处理g,也无法将其提取到预编译的模块中(它正在积极开发中,需要保持最新)。它们在不同的文件中定义。
有没有一种方法可以告诉Visual Studio编译g以提高速度,同时使用Debug配置保持编译f
您可以将f
移动到另一个编译单元,例如另一个文件或#pragma optimize
。后者可能是更好的选择,因为与更改特定文件的编译设置相比,忘记设置更难,因为您必须记住要返回并重置特定文件。
或者,您可以在调试模式下进行评测,看看发生了什么。由于VS Premium及以上版本包括这些工具,所以不应该太难,或者您可以使用第三方工具。分析通常能很好地了解任何放缓的真正原因。
相关文章:
- 优化/减少 if 语句中的条件表达式
- 在循环条件中调用const vector size()似乎缺少优化
- 循环/作用域中的c++条件优化
- 编译器是否优化了语句"for"第二个条件?
- C++ 优化 if/else 条件
- C++位掩码/条件分支优化
- 如何有条件地为模板标头设置编译器优化
- if条件下两个字符串比较的优化代码
- Visual Studio中的条件优化
- 编译器优化能否消除在 for 循环的条件中反复调用的函数?
- 循环中的常量条件:编译器优化
- C++是否允许优化编译器忽略对 for 条件的副作用
- 返回true的模板化类型方法是在条件中进行优化的良好候选者
- 为什么将条件写转换为无条件写不是线程安全的优化?
- 为什么GCC没有尽可能地优化这组分支和条件?
- 如何优化If/then条件表达式的长序列- SIMD
- 优化条件"if (m == 0 || n == 0)"的方法
- 条件评估是否优化?这个代码坏了吗
- 优化具有两个条件的数组元素的比较;C++抽象机制
- 我如何优化算法和条件在这个for循环