我用 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/