Coding Horror - programming and human factors by Jeff Atwood

Jeff Atwood氏が自身のブログCoding HorrorにおいてFile Compression in the Multi-Core Eraという記事を公開した。マルチコアにおけるファイル圧縮について紹介した内容。Jeff Atwood氏はJavaScriptベンチマークの公開など、Coding Horrorにおいてベンチマークやプログラミングに関する話題を多く扱っている。これまでも何度かファイル圧縮・展開とマルチコアの活用についても記事を掲載している。

Jeff Atwood氏はクアッドコアIntel Xeon E5420 2.5GHzが2つ搭載された合計8コアのシステムで64ビット版の7zip (4.64)を使ったファイルの圧縮を実施。4.76GBのデータベースバックアップファイルを圧縮する作業を行っている。7zipによる圧縮と、アーカイブフォーマットをbzip2/スレッド数を8に設定した場合の圧縮時間と圧縮後のファイルサイズが掲載されている。

7zipを使った圧縮の結果 - Coding Horror: File Compression in the Multi-Core Eraより抜粋

7zipでbzip27zipを使った圧縮の結果 - Coding Horror: File Compression in the Multi-Core Eraより抜粋

結果は7zipの方が優れた圧縮率を誇るが作業時間がかかり、これと比べてbzip2は優れた圧縮時間を実現しているが圧縮率に劣るということになる。氏は圧縮作業中のCPU利用率を調べ、7zipの場合は2並列ほどしか動作できていないものの、bzip2アルゴリズムを使った場合は指定した8スレッドが並列にうまく機能していることを紹介している。

CPUの1コアあたりの性能は以前ほどリニアに向上しない。省電力化の流れもあり、1コアあたりの性能は新製品がリリースされてもそれほど伸びない状況だ。かわりに搭載されるコアの数が増えており、ハードウェアの性能を発揮するにはいかにマルチコアを効率よく使うかが重要になってきている。

Jeff Atwood氏がFile Compression in the Multi-Core Eraで紹介している内容はマルチコアを活用する事例としては典型的なものだが、結果が明確で違いもわかりやすい。並列度を上げてコアをフルに使うようにするとシステムの他のレスポンスが悪くなることもあるため必ずしも並列度を限界まで増やせばいいというものではなく状況に応じて増やすわけだが、そもそもアプリケーションごと個別に対応する必要があるという現状だ。そういった点においてFile Compression in the Multi-Core Eraで紹介されている内容は計測事例として興味深い。マルチコアの性能をより発揮させたい場合、アプリケーションごとに調査して並列度を上げられるか調査する必要がある。