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

时间:2012-12-04 00:14:39

标签: c++ benchmarking

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

1 个答案:

答案 0 :(得分:3)

由于您使用的是双打,因此hard float与软浮动相比。

请注意,您不得尝试在不支持硬浮动的操作系统上运行硬浮点数二进制文件。如果这样做,它将似乎工作,直到两个进程之间的上下文切换使用硬浮动。由于操作系统不会在上下文切换中保存浮点状态,因此它们会踩到彼此的浮点上下文,结果将无法预测。

我相信链接器会捕获这个,所以除非你自己编写程序集并且不使用任何库,否则很难意外地遇到这个问题。