2

unsigned int をゼロにする最速の方法は何ですか?

現在、値を 0 に設定しているだけですが、変数をゼロにするためのトリックがあるかどうかわかりません。現在のプロジェクトに数クロック サイクル戻る必要があります。私は標準の 8051 プロセッサを使用しており、2 つの異なる変数があり、それが役立つ場合はゼロにする必要があります。

4

5 に答える 5

5

質問には 8051 というラベルが付けられているため、レジスタをゼロにする必要がある場合は、ゼロを移動するのではなく、レジスタをそれ自体と XOR する方が速くゼロにすることができます。1 つのオペコード フェッチとデコード vs オペコード フェッチ デコードとオペランド フェッチ。

高水準言語を使用していて、手作業でアセンブルしたり asm で記述したりしない場合は、 を使用することをお勧めしますvar = 0。コンパイラは、必要な最適化を処理します。

于 2012-05-06T19:47:44.503 に答える
3

人間のためにコードを書き、最適化する必要のないものを最適化する努力を無駄にしないでください。変数にゼロを割り当てたい場合は、変数にゼロを割り当てます。x = 0;

速いプログラムを正しくするよりも、正しいプログラムを速くする方が簡単です。

于 2012-05-06T19:56:30.700 に答える
2

コンパイラがこの種のことを最適化すると思います。マイクロ最適化はマイクロ結果につながることを忘れないでください。

于 2012-05-30T05:36:37.027 に答える
1

マイクロ最適化はマイクロ結果につながります。

ゼロを達成するために、変数をそれ自体と xor することができます。より高速ではないにしても、コンパイラがすでにそのように実行している可能性は非常に高いです。

于 2012-05-06T19:48:02.050 に答える
0

まだ行っていない場合は、まず、問題のコードを含むコード ブロックのタイミングを計る方法を実装してみてください。

次に、var = 0; を試してください。リストでアセンブラーを生成するコンパイラー・スイッチを使用します。次に、XOR ソリューションに対して同じことを行います。少し余分な作業が必要ですが、すぐに結果が得られます。

于 2012-05-06T23:14:40.203 に答える