32-bit and 64-bit performance test

by syoyo

Core 2 duo マシンを使うことができるようになったので、
よい機会なので 32-bit のバイナリと、64-bit のバイナリのパフォーマンステスト
を行ってみました。
また、比較環境として Athlon X2 も測定してみました。
まずは交差判定のテスト。10000 レイと 10000 三角形との SIMD 交差判定テストです。
テストでは 1 つのコアだけを使っています。使用したコードはこちら。

http://lucille.atso-net.jp/svn/angelina/isect/32bit_vs_64bit/

32bit_64bit.png

2.16 GHz Core 2 Duo, Mac OS X, gcc-4.0.1:

o 32-bit
97111703.708308 isects/sec (22.256312 clocks per isect)

o 64-bit
114009485.589201 isects/sec (18.962169 clocks per isect)

2.0 GHz Athlon X2, Linux, gcc 4.1.2:

o 32-bit
57712062.975403 isects/sec (35.040012 clocks per isect)

o 64-bit
62688889.460054 isects/sec (32.166952 clocks per isect)

C2D: 64-bit is 17% faster than 32-bit
X2: 64-bit is 9% faster than 32-bit

Core 2 では 17% の向上、X2 では 9% の向上となりました。
本来であればインストラクション解析も行って正確で fair な解析を
行いたいところですが、 intel にはインストラクションシミュレータが
ありません。なのでとりあえずはこれ以上突っ込んで解析するのはあきらめました。

1 交差判定に必要なクロック数は、Core 2 と X2 で大きな差がありますね。
128-bit SIMD 演算器が Core 2 では 1 クロックに向上したことによることの恩恵でしょうか。
(そもそも、今まで SSE は 1 クロックで処理できるものと思っていたのですが、違ったとは)
とはいえ AMD も時期プロセッサでは fp 演算器を倍増するとのことですから、
この差はいずれ縮まるかもしれません。

次に、lucille 自体を、C2D 上で 32-bit バイナリ版と 64-bit バイナリ版で
速度比較してみました。
テストに使ったのは chinahou.rib です。

32-bit: 17.864 sec
64-bit: 16.177 sec

約 10% ほどの向上になりました。

64-bit にしても、それほど劇的にはパフォーマンスアップするわけではないようですが、
少なくとも 「C2D では 64-bit は遅くなる」ということはグラフィックスの場合には
無さそうです。

Advertisements