0

私は、低レベル (ハードウェア クローズ) の詳細にあまり詳しくありません (多くのことを忘れていました)。

私のアプリは非常に短い期間で数百万 (またはそれ以上) のビット操作操作を実行する必要があるため、パフォーマンスが重要です。

値の特定のセクション (4、5、または 6 ビットで構成される) がint指定された値と等しいかどうかを確認する必要があります。

intを完全なマスクとして使用することで、これを解決できます。または、ビット シフトを使用して (邪魔なセクションを取り除くため)、直接比較 (==) を実行します。これらは同等の性能を持っていますか? どちらが速いですか?

4

1 に答える 1

3

一般的に言えば、 ((a & b )== c) は非常に高速で、余分なシフトを伴う同じ操作よりも高速である必要があります。((a>>n)&b)==c)

ループ アンロールなどの他の最適化手法は、どのシフト操作とマスク操作が最速かを推測しようとするよりもはるかに効果的である可能性があります。

そのレベルでのパフォーマンスを本当に重視する場合、答えは、実際の展開環境で考えられるすべてのバリエーションをベンチマークすることです。

于 2012-10-05T19:27:18.837 に答える