ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ライフゲームコミュのライフゲームの高速化

  • mixiチェック
  • このエントリーをはてなブックマークに追加
初めまして、今日ライフゲームコミュを発見してウキウキしていたwarinsideです。
なにとぞ、ヨロシクお願いします。

ところで、ライフゲームの魅力のひとつは高速なアルゴリズムを組むことだと思います。

僕が作ったプログラムは、BitBoard的な処理を採用してビット演算を主に用いて高速な処理を行うようにしたもので、32*24576セル(=786432=1024*768)を210 世代/秒くらいの性能でした。

http://www.eva-01.jp/d/?date=20070612#p03
こちらの方は、580 世代/秒前後らしいので、僕の記録を大きく上回っています。

ああ、悔しい。

しかしながら、これ以外にネット上には定量的な処理速度の記録を見つけることができませんでしたので、トピ立てした次第であります。

「俺のプログラムはもっと速いぞ!」
「このやり方は速いぞ!」

といったお話が出来ればいいなーと思います。

-------
ちなみに、以下のような環境で作り、走らせました。
VC++6.0->Intel C++ Compiler
PC: Core2Duo , メモリ2G , WindowsXP

セルの画面表示は無し(ちゃんと動作することは確認しています)
32*24576セルなのは、32bitCPUで演算するのに丁度いいんじゃないかと思ってのことです。
超細長トーラス形です。

コメント(5)

拙作ですが、10数年前の作品で恥ずかしいのですが、
http://www.vector.co.jp/soft/win95/game/se042905.html
↑遙か昔こういうものを公開していました。

作りっぱなしで放ったらかしで、中途半端な完成度ですがお試しあれ。

久しぶりに作り直そうかな。。。
>そらみみさん
おお、描画も入れてこの速度ですか!

正直僕はあまりプログラミング暦が長くないので、あまりアルゴリズムなどを知らないのです。
どのような工夫がなされているのかすごく興味があります。できれば少し教えていただけませんか?
このプログラムは、確か、座標空間が2000×2000あります。だからといって、4000000個の配列を処理するわけではありません。「白」のセルとその周囲の8個のセルが、オブジェクトを成していて、相互にポインタでつながっている感じです。「黒」セルのとなりも黒ならば、ポインタはNULLとなります。世代が進む度に、各セルが、自分の周りにいくつの「白」セルがあるかを数えて、生まれたり死んだりします。
高速化については、皆目見当がつきませんが、既存のプログラムを観察してみようと思いました。僕が使っているプログラムは、Life32v215です。ググればダウンロードできると思いますよ。ただし、英語圏のプログラムですので、ヘルプファイルも全て英語です。
>そらみみさん
なるほど。まとまりで管理しているのですね。

>まこぴ〜さん
あれれ、サイトが非常に重くて落とせません。。ソースコードがあればいいんですけどどうなんでしょう。まあしかし、人のプログラムを読むのは非常に苦手なんですけどね^^;

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

ライフゲーム 更新情報

ライフゲームのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング