2007/03/25 - 並列プログラミングは奥深い

今のPCのCPUはCore2 Duoなんだが,WorldTesterを実行するとCPU使用率50%で頭打ちになる。これは1つのスレッドで全て処理しているため,CPUを1つしか使わないから。そこで実験的に画面上のオブジェクトを半分ずつ別スレッドで処理するようにしてみた。具体的には,起動時にスレッドを複数生成し,当たり判定と物理演算処理を先程のスレッドにキューイングするように実装した。が,結果的には性能が1.2倍程度,CPU使用率最大70%くらいにしかならなかった。スレッド間で1つでも排他制御を入れるとシングルスレッドの方が早くなっちゃうし,複数のCPUを極限まで使い切るのは結構奥深いらしい。

コメントする