私はWindowsモバイルデバイスでコードのパフォーマンスについていくつかのベンチマークを行っていましたが、一部のアルゴリズムが一部のホストで大幅に向上し、他のホストでは大幅に低下していることに気付きました。もちろん、クロック速度の違いを考慮に入れます。
参照用の統計(すべての結果は、ARMv4を対象とするVisual Studio 2005によってコンパイルされた同じバイナリから生成されます):
Intel XScale PXA270
- アルゴリズムA:22642ミリ秒
- アルゴリズムB:29271ミリ秒
ARM1136EJ-Sコア(MSM7201Aチップに組み込まれています)
- アルゴリズムA:24874ミリ秒
- アルゴリズムB:29504ミリ秒
ARM926EJ-Sコア(OMAP 850チップに組み込まれています)
- アルゴリズムA:70215ミリ秒
- アルゴリズムB:31652ミリ秒(!)
考えられる原因として浮動小数点を調べました。アルゴリズムBは浮動小数点コードを使用していますが、内部ループからは使用しておらず、どのコアにもFPUがないようです。
だから私の質問は、どのメカニックがこの違いを引き起こしているのかということです。できれば、問題のボトルネックを修正/回避する方法についての提案があります。
前もって感謝します。