
Java 6のスレッド最適化は実際に動作しているのか? - パートII
パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。

パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。

2つのパートからなるこの記事では、シングルスレッドベンチマークの助けを借りて、Java 6のスレッドのパフォーマンスに関する疑問に答える試みをしようと思います。
最近のプロセッサが提供する並列処理を活用するのはなかなか難しい。これらのCPUが低価格でも手に入るようになった今、ソフトウェアエンジニアの主要な課題は、アプリケーションの中でプロセッサをいかに活用するかということである。マルチコアのソフトウェアエンジニアリング、パフォーマンス、ツールに関する国際会議(The International Conference on Multicore Software Engineering, Performance, and Tools; MSEPT'12)でその答えが見つかるかもしれない。
Microsoftは、Parallel Visualization Pack for Visual Studio 11 Developer Previewをリリースした。新しいパラレルウォッチウィンドウの機能を拡張するために作られており、マルチスレッドアプリケーションのデバッグを補助する視覚化ツールが含まれている。
オプションパラメータは最初から .NET に含まれていたが,C# でサポートされないこともあり,COM ライブラリ関連以外での使用はタブーである,という解釈が一般的だった。C# 4 でオプションパラメータがサポートされるようになるので,今後はレガシーなコード以外でも多く見られるようになりそうだ。また C# 以外にも,動的言語との相互運用性や変更不能(immutable)なデータ構造体,さらに ASP.NET MVC のさまざまな部分でも使われるようになるだろう。
Microsoft は 2007 年から .NET の並列処理拡張 (Parallel Extensions) に取り組んでいるが,それでも .NET 4.0 に実装完成が間に合わなかった機能が数多く残っている。“フレームワークのコアに含めるには,アプリケーション依存性が強すぎる” 機能もあったが,その他は単純にテストとユーザフィードバックの不足が理由だ。代わりとして彼らは,一連のパターンとサンプルをリリースすることにした。
現在、プレビュービルドとして提供されているAccelerator V2は、.NETのマネージ・ライブラリでマルチコアCPUやGPU上でのデータ並列プログラムを記述する際の手間を省いてくれるものだ。
Clojureインスタンスwの配布と遠隔操作のためのツールであるFlightCasterのオープンソースCraneは、現在EC2に特化されている。IncanterはClojureを使って簡単にR風の統計計算ができるClojureライブラリとツールである。また、ビルドと依存関係管理ツールであるLeiningen 1.0がリリースされた。
Microsoft Biology Foundation(MBF)は、.NETフレームワーク上に構築されたライブラリ群であり、オープンソースの伝統に基づいている。Microsoftは、車輪の再発明をすることなく、既に生物情報工学のコミュニティで利用されているファイルフォーマットを活用している。さらにMicrosoftにとってはめずしいことだが、MBFの将来バージョンに加えられる貢献を広く募集しているのだ。
.NETのTask Parallelライブラリは、ベータ2のためにモデルチェンジを行なった。パフォーマンスの向上に加えて、もっとも重要な変更は、おそらく新しいキャンセルフレームワークであろう。これは、親子関係をタスクの論理グループに自由に与えることができるキャンセルトークンによって置き換えるものである。
GoはGoogleによる新しいオープンソースの実験的プログラミング言語である。Cに似ているが、リフレクション、ガベージコレクタ、動的型、並行性、および、並列処理のような機能が追加されている。