10兆までの素数のリストを作ってみませんか?(日経ソフトウェア)
http://itpro.nikkeibp.co.jp/article/Watcher/20100519/348242
「10兆までの素数リストを作る」、一見シンプルな課題だが、さすがに10兆ともなるとプログラミングの方法によって処理時間がかなり変わってくるようだ。
この記事ではCore i7-920という現時点ではかなり高性能なCPUを使っているが、それでも「単純実行すると28日かかる計算を並列処理によって縮めてようやく1週間」とある。
書き出しに必要なHDDの容量もTB単位、変数も32bitでは勿論オーバーフローするので64bitが必要となるが、すべて64bitで演算すると効率が悪い、などアルゴリズムからリソースの使い方まで工夫する点がテンコ盛り。
記事の中ではディスクのI/Oについて触れられていないが、こういう処理だと調整するとかなり効いてくる。少なくとも計算結果を1件づつファイル出力するのと、メモリにキャッシュしておいて1万件づつ書き出すのとではだいぶ違ってくる。
パズルみたいで確かに楽しそうだが、必要なハードウェアと実行時間を考えると実際やってみるのはチト厳しい。
10億までなら2分で終わるようなので、新人研修のネタとかにしてみても面白そう。同じ条件のハードウェアを準備して、誰が一番速く処理を終えられるか競ってみるとか。