2011-10-16 7 views
2

最も顕著な速度の違いは、Javascriptのdom要素の再帰的なトラバーサルです。これは、Javaで実装された同じメソッドよりもずっと高速です。JavaよりJavascript経由でDOM文書にアクセスする方が速いのはなぜですか?

これはなぜですか?何故、私はDOMよりもはるかに高速にDOMをトラバースすることができるのです(特に、同じメソッド(再帰)を共有する場合)。

+3

ブラウザは、コアを高度に最適化されたネイティブコードで実装します。 JavaはDOMでJavaを実装しています。 – rid

+0

@nos org.w3c.dom、JavaのJavascript実装と同じ再帰的なトラバーサルを作成しました。 JSは、Javaの実装を最適化した後でさえ、はるかに高速です。 – KJW

+3

_ JavaよりJavascript経由でDOM文書にアクセスする方が速いのはなぜですか? –

答えて

2

ブラウザにはJava用のインタプリタがないためです。彼らはjavascriptを解釈します。 DOMはどこでも使えるモデルですが、主にブラウザ環境で使用され、ブラウザはDOM解析を最適化しています... javascript用。

ブラウザがDOM解析を最適化した理由は、DOM解析が動的Web開発の基礎であるという事実によるものです。ページをよりダイナミックにする通常の方法を考えてみましょう:

1.) Listen for some events fired on the page. 
2.) When those events are fired, modify some number of DOM objects, 
    e.g., by changing their visibility, geometry, or actually moving 
    them to other portions of the DOM. 

ページ全体を再する必要がないように、それは、ブラウザのメモリに文書を格納するための仕様を提供するため、DOMは、ここで重要な理由がありますマークアップの小部分の変更によってレンダリングされます。ブラウザメモリに格納されたこれらのDOMオブジェクトは、ネイティブのjavascriptオブジェクトと同じように構造化されています。したがって、javascriptを最適化する方が簡単です。

ダイナミックなWebページが不可欠になって以来、ブラウザーは互いに最速のカスタムJavaScriptインタープリタを持つように互いに闘い続けてきました。ダイナミックなWeb環境では、あなたができる主な場所最適化のための最も多くの報酬がDOM解析であることを見てください。

DOMを使用するには、Java環境での緊急の必要はありませんが、ブラウザ環境では絶対に必要です。これは、JavaよりもDOM解析のためにjavascriptの方が最適化されている可能性が最も高い理由です。より多くの人々がブラウザで動作させることに関心があります。しかし、明確にするために、私はコードレベルでの正確な技術的理由がなぜ実際より速いのか分かりません。

+0

ブラウザにはJVMまたはJavaプラグインと呼ばれるインタープリタがあります。この答えは何も説明していません。 – EJP

+0

答えは、ブラウザがJavaをファーストクラスの市民として扱わないことを指摘していました。したがって、JavaのDOM解析を最適化しません。また、JVMはJava用の汎用インタープリタです。ブラウザ固有のインタプリタではありません。一方、ブラウザベンダーはjavascript用のカスタムインタープリタを書くのに大変な時間を費やしています。 – Ryan

+0

ブラウザはJavaのDOM解析に関して*何もしません。 Javaは、実際には高度に最適化された方法で動作します。 – EJP

1

私は答えが「ブラウザ開発者がより多くの努力をしているアクセスのようなものだから」と要約できると思います。

ウェブサイトで豊富なインタラクティブ性を提供するためにJavaを使用していた場合、Javascriptは迷惑なスクロールバーバーにのみ使用されていました。このような世界では、ブラウザベンダーはからJavaにできるだけ早くアクセスしていました。

1

JavaコードはXercesなどの汎用XMLパーサーを使用していますが、HTMLの非XML準拠部分に対してエラー訂正が行われます。あなたのJavascriptは、おそらくCPUを大量に使用する部分がネイティブコードでほぼ確実に実装されている、高度に最適化されたHTML固有のパーサーを使用しています。

関連する問題