HIRASE CONNECTION WK

programming collection

目次

Blog 利用状況

ニュース

書庫

日記カテゴリ

Link Collection

[雑記] Google Chrome の応答性へのこだわり

@IT に「Chromeはなぜ速いのか」という記事が出ています。インターネット ブラウザを作る上だけではないノウハウが満載なので、簡単にまとめておきます。→そんなことない?

Google Chrome の応答性へのこだわり

  1. プロセスは、大きく3種類のプロセスを生成する。
    1. ユーザー インタフェース
    2. レンダリング
    3. プラグイン
  2. 起動プロセスは、できるだけ簡潔に行う。
    1. 最初に読み込んでいるのは、chrome.exe と chrome.dll、設定ファイルだけ。ページのレンダリングに必要なモジュールやその他もろもろは後から非同期に読み込む。驚くべきことに、ネットワーク関連のモジュールさえも読み込んでいない。
  3. ユーザーがアクセスするプロセスからのディスク I/O は一切禁止。
    • 「名前を付けて保存」さえも別プロセス。
  4. 子ウィンドウを作らせない。
    • 子ウィンドウがあると、Windows メッセージの仕組み上、どこかのウィンドウで処理がもたつくと、全体の応答性が低下してしまう。
  5. レンダリング プロセスは本体ウィンドウへの描画を間接的に行う。
    • いったん裏画面へ描画し、表画面へ転送する(もちろん必要に応じて、だと思う)。
  6. Chrome ブラウザは、フィッシングサイト対策のために URL リストを保持するが、URL そのものではなく、SHA-256 値を持っている。
    • しかも、SHA-256 値は、256 bit のうち先頭の 32 bit だけである(32bit がヒットしたら、Google のサーバーから本当に疑わしい URL なのかを確認しにいく)。
  7. URL → IP アドレスへの変換(DNSによる名前解決)をユーザーからの命令(クリックなど)が来るまでもなくやってしまう(AJAX的だ)。

応答性へこだわる理由

  1. 当初のわれわれのGoogle Chromeの目標は、このブラウザをできるだけ速くすることだった。しかし、生の速度(raw speed)に加えて高い応答性を持つようにしたかった。結局のところ、ページがいくら速くロードできたって、ユーザーインターフェイスが固まったら意味がないんだから! (But in addition to raw speed, we wanted it to be highly responsive. After all, it doesn't matter how fast pages can be loaded if the user interface is locked up!)
  2. 0.5秒の遅延でユーザー離れしてしまう。

その他

  1. ユーザーをないがしろにしないこと (not to maltreat users)
  2. 裏でできる限りのことをやろう
  3. コード変更のたびに、「自動ビルド→自動テスト→自動パフォーマンス計測」され、パフォーマンスが悪くなるようなコード変更は許さない。

以上

追記@2008-12-24T08:53

そういや最近、自分が書く GUI のツールは、「コンソール呼び出し」が多くなってきました。コンソール呼び出しの場合、UI スレッドとは完全に分離されているので応答性が良いですし、結構 Chrome さんに似ている感じになっています。ま、でも呼び出す先のプロセスはひとつのコンソールなんで、Chrome さんのように、レンダリングプロセス、プラグインプロセスのようにヘテロジニアスな感じではないですが。ま、似てますね。

投稿日時 : 2008年12月24日 8:41

コメントを追加

# re: [雑記] Google Chrome の応答性へのこだわり 2008/12/24 11:12 Chuki

なんか、上記仕様を見ていると、広告収入に頼ってるGoogleの姿が如実に表れていて面白いですね^^。

>子ウィンドウを作らせない
他言語対応大丈夫!? とか

>ユーザーインターフェイスが固まったら意味がないんだから
全てのレンダリングが終わるまでUIを触らせないようなロジック組むことだってあるのに...とか

思ってしまいました^^;

#ブラウザは表示装置なんだから、色々なタイプが増えてきて嬉しい今日この頃。

# re: [雑記] Google Chrome の応答性へのこだわり 2008/12/24 15:51 倉田 有大

あれ、書き込んだはずなのに消えてる;_;

Google Chrome は、マウスジェスチャー機能にまだ対応してませんよね?
したら、FireFoxのいい対抗馬になりそう

# re: [雑記] Google Chrome の応答性へのこだわり 2008/12/24 23:38 T.Hirase

コメントありがとうございます。

TO: Chukiさま。
他言語問題は何とでもなりそうですが、「UIを触れる」ことと「UIが固まる」ことはちょっと違うと思います。UIを触れなくする場合は、単に操作できないだけで「あと??秒お待ちください」と表示はした方がいいです。この場合、「??秒」をカウントダウンさせることで「UIは固まらない」ことになります。

TO: 倉田さま。
あら、消えてましたか。一度、追記したときに消えた・・・とかはないと思うので、きっとたまたまでしょう。
マウスジェスチャー、ないですね。まぁ、Firefoxも素の状態だとないですから、Chrome のアドオンが増えてくれば自然と対応されるのではないでしょうか。
それより、レンダリングの不具合がまだまだ多くみられますし、mac 版もないですし、やることは数多くありそうです。

タイトル  
名前  
URL
コメント