0

C ++でMatrixクラスを作成し、Raspberry Piでこのコードをテストするためのベンチマークを作成しました。archLinuxを使用した場合、計算時間は0.4ミリ秒でした。RTOSであるChibiOSを使用した場合、コードの実行時間は2.5ミリ秒でした。どちらの場合もCPU周波数は同じ(700Mhz)でした。1つのシステムでメモリ操作(calloc、memcpy)が遅い可能性がありますか?

4

1 に答える 1

3

ダブルスを使用しているので、ハードフロートとソフトフロートの違いです。

ハードフロートをサポートしていないOSでハードフロートバイナリを実行しようとしないでください。そうすると、ハードフロートを使用する2つのプロセス間でコンテキストスイッチが発生するまで機能しているように見えます。OSはコンテキストスイッチに浮動小数点の状態を保存しないため、互いの浮動小数点コンテキストを踏むことになり、結果は予測できなくなります。

リンカがこれをキャッチすると思います。したがって、アセンブリを自分で作成し、ライブラリを使用しない限り、この問題に誤って遭遇することは難しいはずです。

于 2012-12-04T00:29:54.003 に答える