アクセシビリティ
Adobe
サインイン 注文状況 ユーザー登録

Adobe MAX 2009
デベロッパー視点で見る、Adobe MAX 2009 の見所

Adobe MAX 2009 イベントレポート

記事寄稿:廣畑 大雅 (taiga)氏

 

Flash Player Internals

アドビ システムズ社 Flash Player アーキテクトのリー・トマソン氏のセッションでは、Flash Player の内部構造についての説明が行われました。セッションの後半には、発表されたばかりの Flash Player 10.1についての説明もあり、深くて非常にレベルの高い内容のセッションでした。

MAX 2009: Flash Player Internals

Flash Player の構築

Flash Player は、一つのソースコードで構築されていて、大半は、基盤としてすべてのターゲットの Flash Player 間で共有されています。他には、モバイルプラットフォーム、Netscape プラットフォームなど、各プラットフォームの専用コードがあります。

Flash Player は一貫性を保ちながらクロスプラットフォームに対応し、最適化されていますが、以下の相違点があります。

  • CPU メモリ
  • 画面サイズ
  • マウス、キーパッド、タッチ
  • ユーザーエクスペリエンス

実際の例として、下記のコードは、PC 上では動作しますが、合計メモリサイズが 100MB のモバイル上では失敗します。

for(var i:int = 0; i < 10; i++) {
data[i] = new BitmapData(1600, 1600);
...
}

Flash Player の基本構造

実行モデルについて

Flash Player のスレッドは、シングルスレッドです。
以下の画像のようなサイクルで処理を実行します。

実行モデルが十分に機能しているときは、すべての処理を同時に実行することができません。
そのような場合、BitmapData.draw() を除いて、処理はすべてキューイングされます。

なお、updateAfterEvent() を実行した場合、以下の画像のようなサイクルで処理を実行します。

実行タイミングの優先順位について

以下の順に実行されます。

  1. 音楽ストリーミング
  2. ビデオ
  3. ActionScript と描画処理

Flash Player 10.1 のリソース管理

  • Flash Player は メモリ不足や、正常シャットダウンをハンドリングします
  • モバイルではインスタンスを管理します

ActionScript について

ActionScript Virtual Machine (VM)

  • AS2は、AVM-1上で動作します。
  • AS3は、AVM-2 Tamarin の上で動きます
    • JIT は、AS3バイトコードを実行コードに変えます
    • Nanojit は、JIT エンジンです。
    • コミュニティサポートをして、複数のプロセッサをサポートします。https://developer.mozilla.org/En/Nanojit
  • Flash Player 10.1 新機能
    • String 処理の改善
    • 低 VM メモリ占有スペース
    • GCチューニング

ガベージコレクション (GC)

  • GC はメモリ管理ではありません
  • メモリ管理は巧妙です
  • 手動でインタフェースを実装して、明示的に dispose します
  • GCでは、素数が役に立ちます

Alchemy

レンダリングについて

Flash Player 10.1 のビデオアクセラレーションについて

  • ビデオは、GPU 上でデコードされています
  • H.264 エンコーディングのみ対応し、ドライバの認証を行います
    ( ON2, Sorenson は、一般的ではありません )
  • 電力使用量とフレームレートを改善しています
  • すべての wmode をサポートしています

Flash Player 10.1 のビットマップ最適化について

  • 要求に応じて JPEG の圧縮率を減らします
  • 表面のインスタンス化
    読み込み専用ビットマップのための、一ビットマップのメモリコストではありません
    ビットマップを少しずつ収集します
    未使用メモリは解放します
  • ダイレクト ミップマッピング
    モバイルにとって特に重要です
  • モバイルにおける効果的な 16 ビットの取扱い

モバイル上 Flash Player 10.1 の GPU ベクターアクセラレーションについて

  • モバイル初!
  • GPU レンダラとソフトウェアレンダラを完全に置き換えます
  • 理論 : 計算処理を CPU から GPU に移行します

パフォーマンスのボトルネックについて

注意すべき点は以下の通りです。

  • ActionScript
    • ActionScript 3.0 を使用しましょう
    • 実行間隔と、高フレームレートに注意しましょう
  • モバイルの表示リスト
    • 最小維持を心がけましょう
    • Sprite の多様は避けましょう
  • ビデオ
    • サイズ、フォーマット、およびターゲットに適切なフレームレートを適応させましょう
  • ガベージコレクション
  • レンダリング

なお、ソフトウェアと GPU のベクターレンダラ機能比較は以下の画像の通りです。