c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

Apple WebKitに非公開API?

マイコミジャーナルさん「Apple WebKitに非公開API? Safariの高速さの秘密か」
 http://journal.mycom.co.jp/news/2008/03/04/028/index.html

これまでMac OS X向けにビルドされたFirefox 3はスクロール処理が遅いという問題が指摘されていた。Firefox 2と比較した場合、スクロール関連の計測でだいたい50%から500%も遅く動作することが確認されていたという。しかしながらグラフィックレイヤの定石に従うならばFirefox 3はより高速に動作しても遅くなる道理はないという。
同氏は調査を続け、最終的にADC - Technical Note TN2133に記載されているCoalesced Updatesが問題の原因であることを発見。Firefox 2がこの影響を受けなかったのはFirefox 2がCarbonアプリケーションであったためで、Cocoaで開発されたFirefox 3のみが影響を受けていたことがわかったという。Coalesced Updatesを無効にすれば同問題を回避できることも明らかになった(ただし問題対応された10.4.4以降のみで対処可能)。

同氏はCoalesced Updates問題を発見し、個々のアプリケーションで同機能を無効にする方法を調査している間に、Safari/WebKitが同問題の影響を受けていないことに気がついたという。同アプリケーションのソースコードを調べていったところCoalesced Updatesを無効化している気配がなく、かわりにWKDisableCGDeferredUpdates();といったWK*()の関数を使っていることがわかったとされている。
WK*()系の関数はドキュメント化されていない。どうやらWebKitからのみ使われるOSに隠蔽された機能がいくつかあるようで、WK*()系の関数はそうした機能のひとつのようだ。Appleのアプリケーションに利益をもたらすために隠蔽されているわけではなく、ライセンスの関係上ドキュメントやソースコードを公開できない部分ではないかとみられる。またWK*()系を使っているからSafariが高速に動作するというわけでもないようだ。同機能をリンクした場合のライセンス上の問題が明らかではないためFirefox 3においてデフォルトで同機能が使われることはないとみられるが、研究対象としてはおもしろいところだ。

たしかに。
でもWebKitオープンソースなので、コードを読める人にはこうやってわかるわけですね。
ちなみにネムは、読めません。