如何使用内联函数加快c++的执行速度
How do I speed up C++ execution with in-line functions?
我正在将一个FORTRAN蒙特卡罗程序转移到c++中,发现当完全转移时,c++程序的运行速度几乎是FORTRAN程序的两倍。我正试图起草c++程序的第二个版本,其中许多函数通过使用类结构来加快速度;然而,有些函数超过40或50行,我读到过将大型函数放在一行中会减慢程序的速度。当涉及到将函数排成一行时,什么是太大?我如何加速c++程序(没有多处理),使c++程序可以执行得和FORTRAN程序一样快,或者接近一样快?
在c++中内联只是对编译器的一个建议。如果函数太复杂,大多数现代编译器都不会内联它。编译器将尽其所能在任何情况下优化调用,即使没有"inline"关键字,只要在编译时实现是可用的。也有一些编译器会跨编译单元内联,但这种情况不太常见。
在任何情况下,函数调用都不太可能支配您的处理时间。在编译器为您进行微优化之前,您可能需要对代码进行概要分析,以找出瓶颈实际在哪里。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- QML按钮点击功能执行顺序
- 程序在执行程序的其余部分之前退出
- 为什么catch中的代码没有被执行
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 将执行、作业和WinAPI相乘
- 对字符数组中的元素执行逐位操作
- 为什么g++在未执行的代码处标记强制转换错误
- 如何使用原子指针执行双缓冲