c++ - 为什么我的代码在 Linux 上比在 RTOS 上更快?

标签 c++ benchmarking

我用 C++ 编写了一个 Matrix 类,我在 Raspberry Pi 上做了一个基准来测试这段代码,当我使用 arch Linux 时,计算时间是 0.4ms,当我使用 RTOS 的 ChibiOS 时,代码的运行时间是 2.5多发性硬化症。两种情况下的 CPU 频率相同(700Mhz)。可能是内存操作(calloc,memcpy)在一个系统中较慢?

最佳答案

由于您使用的是 double ,因此它是 hard float与软 float 。

请注意,您不得尝试在不支持硬 float 的操作系统上运行硬 float 二进制文件。如果这样做,它会一直有效,直到两个使用硬 float 的进程之间出现上下文切换。由于操作系统不会在上下文切换时保存浮点状态,因此它们会踩到彼此的浮点上下文,结果将不可预测。

我相信链接器会捕捉到这一点,所以除非你自己编写程序集并且不使用任何库,否则应该很难不小心遇到这个问题。

关于c++ - 为什么我的代码在 Linux 上比在 RTOS 上更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13694078/

相关文章:

r - data.table 时间子集 vs xts 时间子集

c++ - const 引用与 const char* 返回的 STL 字符串

c++ - 错误 : Expression must be a modifiable lvalue

c++ - 对 delete[] 的 Malloc 调用在 TotalView 中显示为内存泄漏

javascript - id vs 类选择基准

javascript - 为什么字符串文字比字符串对象快?

c++ - 循环中 << 和 * 哪个运算符运行得更快?

c++ - 哪个(如果有的话)C++ 编译器进行尾递归优化?

api - API 的基准测试/性能测试 - REST/SOAP

r - `if` 比 ifelse 快吗?