在try-catch块中包装循环是否会导致性能问题?
Could wrapping a loop in a try-catch block cause performance problems?
在使用无限循环的游戏或其他应用程序中,将循环包装在try
- catch
块中是否会损害性能?
像这样:
auto main() -> int{
game::init();
try{
while(1){
some_func();
some_other_func();
if(breaking_func())
break;
something_that_could_throw(); // unlikely, though
draw();
swap_buffers();
}
}
catch(const std::exception &err){
// do error handling
}
game::cleanup();
}
我标记了gcc
,但任何其他编译器也适用
当进入try {}
块时,将循环包装在try {} catch() {}
块中会给您带来很小的性能影响,但对于执行循环中的单个迭代则不会。
Vs。在非包装版本中,进入try { }
块需要编译器发出一些额外的指令,以便能够进入随后定义的catch() {}
块。这些额外的指令与未包装的循环相比会有(非常小的)性能差异。
即使将try {} catch() {}
应用于循环的内部部分,安装catch() {}
块入口点的开销将只应用一次,而不是用于单独的迭代。
相关文章:
- 在类中使用随机生成器时出现性能问题
- Qt OpenGL 渲染到纹理性能问题
- 剪辑性能问题
- OpenCV - 基本操作 - 性能问题 [模式:发布]
- 使用 #define 进行跟踪日志记录以避免性能问题
- 在 Qt C++ 中在自定义项委托上绘制文本时的性能问题
- std::函数有性能问题,如何避免?
- 使用 const double* const 作为模板参数 - 代码性能问题
- 在C 中读取大型CSV文件性能问题
- MPI 二进制文件 I/O 基本功能和性能问题
- 使用STD :: MAP在数据及其性能问题中查找重复项.我可以预先分配吗?
- C 功能性能问题
- 在C 性能问题中使用Getter返回地图
- 初始化每个班级成员时的性能问题
- 事件(开始,结束),1天的最大事件.C++ 中的性能问题
- 在X64模式下从C /CLI调用MASM PROC会产生意外的性能问题
- OpenGL:MESA3D屏幕上的软件渲染性能问题
- 是包含容器性能问题的STL关联容器
- 任何性能问题都在qt框架中使用了stackedwidget的最大页面数
- SHGetFileInfo性能问题