0

次の 2 つの CPU 操作を検討してください。

合計 = 1 + 1 + 1 + 1 + 1 + 1+ 1+......n 回

合計 = 1 * n

ここで、これら 2 つの操作が複雑さと CPU 時間の点で異なることを知りたいと思います。また、これらをアトミック操作と見なすことはできますか?

4

2 に答える 2

0

ADD と MUL は別の操作です。

最初のステートメントでは、N 個の ADD 操作 -> 多くの cicles があります。

2番目に、1つの操作があります->数サイクル。

ただし、これらのステートメントがどのように実行されるかは、コンパイラによって異なります。(コンパイラがコンパイル時に 1+1+1+...+1 を N に置き換える可能性があるため、実行可能ファイルは単一の操作になります。ただし、この場合、コンパイラは N 回の操作を行います。)

更新: MUL 操作が存在します: http://en.wikipedia.org/wiki/X86_instruction_listings

于 2012-05-10T06:29:21.167 に答える
0

x86 では、ADD の実行に要する時間は集約で 1 サイクル未満ですが、MUL は約 2.7 サイクルかかります。

コンパイラのオプティマイザは非常にスマートです。シフトを使用してより高速に実行できる乗算を実行している場合は、それが実行されます。

できる限り簡単な方法でコードを記述してください。そうすれば、コンパイラとプロセッサは高速なコードを提供して報酬を与えてくれます。

于 2012-05-10T09:05:16.607 に答える