Snow LeopardのGCD、その間接的なメリット

海上忍
2009-09-03 21:50:01
  • このエントリーをはてなブックマークに追加

 Grand Central Dispatch(GCD)は、Cなどの開発言語に対する拡張と、その処理を担うランタイムという2つの要素に分解できる。そのエンジンが「libdispatch」で、Snow Leopardでは「/usr/lib/libSystem.B.dylib」に含まれる形で提供されている。

 libSystem.B.dylibは、他のUNIX系OSでいうところのlibcに相当する標準ライブラリ。Mac OS Xでは、プログラム(バイナリ)がどのライブラリやフレームワークの機能を使用しているか、otoolコマンドで調べることができるが、libSystem.B.dylibはCやObjective-Cで記述されたプログラムのほぼすべてが使用するため、このライブラリへのリンクの有無をもってGCDが作用しているかどうかは判断できない。

 GCDによる並列処理の最適化が行われているかどうかの判断は、ヘッダファイルをチェックすればわかる。

 「#include 」の記述があれば、おそらくはコード上で処理のブロック化が行われているはず。ここから、システム標準装備のフレームワーク(/System/Library/Frameworksにあるもの)も、dispatch.hがインクルードされたヘッダファイルを確認できれば、GCDによる並列処理の最適化が行われているはず、という推測が成り立つ。

 試しに/System/Library/Frameworksディレクトリで、

grep -R dispatch.h ./*

 を実行したところ(Mac OS Xのgrepは再帰的に検索できるのだ)、予想どおり複数のフレームワークでdispatch.hのインクルードを確認できた。CoreServices.frameworkに内包される「Metadata.framework」や「CarbonCore.framework」などなど、その数は少なくない。

 ということは、GCD対応のライブラリやフレームワークを利用したアプリケーションは、間接的にGCDのメリットを得ていると考えられる。GCDの恩恵をフルに享受するには、アプリケーション本体でブロック化処理を行う必要があるが、そうでないアプリケーションもGCD対応のライブラリやフレームワークを利用することで、多少なりともパフォーマンス向上が見込めるはずなのだ。

 Snow Leopardに移行後、サードパーティー製32bitアプリケーションの速度まで改善されたことは、ここに理由の1つがありそうだ。

Spotlightに関連するフレームワークで、dispatch.hのインクルードを確認。検索速度の向上はGCD対応にあったようだ(画像をクリックすると拡大します) Spotlightに関連するフレームワークで、dispatch.hのインクルードを確認。検索速度の向上はGCD対応にあったようだ(画像をクリックすると拡大します)
  • 新着記事
  • 特集
  • ブログ