このページの本文へ

Web WorkersでPhotoshop風ヒストグラムを作ろう (4/4)

2010年10月19日 11時00分更新

文●古籏一浩

  • この記事をはてなブックマークに追加
本文印刷

Safariでクラッシュしないようにする

 サンプル8のプログラムをSafari 5で実行するとクラッシュする場合があります。Safari 5で正しく動作させるには、ワーカー内で実行するスクリプト(analysis.js)の以下の1行を書き換えます。


var pixels = event.data.imageData;


var pixels = event.data.imageData.data;


 呼び出す側では以下の1行を書き換えます。


var img = context.getImageData(0, 0, canvasW, canvasH).data;


var img = context.getImageData(0, 0, canvasW, canvasH);


 これでSafari 5でもクラッシュせずに動作します。ただし、このプログラムはFirefox 3.6で動作しなくなります(Firefox 4ではOK)。


 Web Workersは負荷の高い処理をバックグランドで実行するには非常に便利な機能です。非同期通信やWebSocketなどとも組み合わせられますし、今回は説明しませんでしたが共有ワーカーという機能もあります。

 最後に、サンプル8を各ブラウザーで実行したときのCPU負荷の状態を紹介します。Operaでは空いているCPUに適度に処理が割り当てられ、CPU全体のパワーの半分程度しか使用されていません。Chromeでは負荷が少ないので詳しくは分かりませんが、メインの処理と表示処理、CPUの数だけ適度に分散されるようです。FirefoxとSafariではCPUの数だけ処理が分散されますが、Firefoxでは全体的に負荷が高くなるようです。こうしたブラウザーによる違いを確認しながら試してみてください。

Mac OS X 10.6 (MacPro)上での動作

Opera10.6.png

Opera 10.6

Chrome6.png

Chrome 6

Firefox4b5.png

Firefox 4(ベータ)

Safari5.png

Safari 5

Windows XP上での動作

Chrome6.png

Opera 10.6

WinXP_Opera10.6.png

Chrome 6

WinXP_Firefox4b6.png

Firefox 4(ベータ)

前へ 1 2 3 4 次へ

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています