チラシの裏からうっすら見える外枠の外のメモ書き

新聞に挟まってる硬い紙のチラシの裏からうっすら見える外枠の外に走り書きされたようなものです。思いついたときにふらふらと。

C言語で演算速度の測定

今年の夏はどうやら冷夏なようで、暑い日がそんなになかった感じ

まだ夏は終わってないんですけどね。

 

さて、今回はCPUの演算速度の中で「乗算と除算、どちらが高速か」ということを調べてみたかったので、これを計測するプログラムを作りました。

仕組みはいたって簡単で、ループ毎に各演算をして、その演算にかかった時間を計測するだけです。

ソースコードは以下のとおりです。

 

C言語による演算速度の計測

 

これをコンパイルして実行してみます。

実行環境

CPU : Intel Core i7 4790K(定格)

メモリ : 16GB

コンパイラ : gcc

すると、以下のような結果が出ました。

f:id:k-hyoda:20170819185126p:plain

f:id:k-hyoda:20170819185129p:plain

このように、各四則演算の中でも、乗算が最も早く、除算が最も遅いことがわかります。

加算と減算はどちらも同じぐらいに見えますが、やや減算のほうが高速なようです。

では、ここで最適化オプションを適用して、再度コンパイルしてみます。

 

実行環境

CPU : Intel Core i7 4790K(定格)

メモリ : 16GB

コンパイラ : gcc(最適化オプションとして-O3適用)

すると、以下のような結果となりました。

f:id:k-hyoda:20170819185139p:plain

f:id:k-hyoda:20170819185142p:plain

 

このように、最適化オプションを設定すると、四則演算は高速化しますが、加算だけあまり最適化されないようです。

特に、除算に関してはかなり高速化しており、加算や減算よりも速くなっていることがわかります。しかし、乗算に関してはあまり高速化されていないようです。

 

 

私が今回調べたかったことは、「乗算と除算、どちらが高速か」ということです。

これらの結果から、除算よりも乗算のほうが高速であることがわかりました。

除算は乗算に比べて計算速度が遅いですが、最適化オプションによっては若干高速化を期待できます。

一方、乗算に関しては高速ですがO3の最適化オプションの恩恵はあまり得られないようです。