2009年11月13日金曜日

速っ。。簡単。。


秋元@サイボウズラボ・プログラマー・ブログさんの『GoogleのGo言語によるプロジェクトが既にいくつか』で紹介されていた


Gotracer (マルチスレッド・レイトレーサー)


を自分の環境で試してみました。
512x512 サイズの計算が4秒と経たないうちに終了しました。


しかし、プログラム上のスレッド数を増やしても減らしてもあんまり差がでませんでした。
CPUをモニタしてみると、デュアルコアなCPU利用率に変化がありません。


そんな時は、Go言語の runtime パッケージにある GOMAXPROCS か、そのまま直に指定することで、利用するCPU数を指定できるようです。
試しに、timeコマンドを使って計測してみると

$ GOMAXPROCS=1 time ./gotrace
3.52 real 3.49 user 0.02 sys

$ GOMAXPROCS=2 time ./gotrace
1.84 real 3.49 user 0.02 sys

おぉ!3.52秒→1.84秒で、ほぼ倍速です。
作者さんのBlogを読むと、8コアで試したら5.8倍速になったそうで、悪くないんじゃないでしょうか。

Go言語なら割と簡単にマルチコア・マルチスレッド対応なプログラムが書けそうな気がしてきました。
何も作ってないのに、デュアルコアでは物足りなくなってもっとマルチコアなマシンが欲しくなりました。。

#golang

0 件のコメント: