0

ブラウザベンダーはjQueryに対して最適化していますか?

これはばかげた反標準に聞こえるかもしれませんが、ブラウザベンダーがJSコンパイラ/インタプリタに組み込まれているjQueryコードに対して最適化されていることは想像できます。

たとえば、JSコンパイラ/インタプリタが$('。blah>p')を認識したとすると、ブラウザは次のように言うことができます。うーん、jQueryにすべてのブラウザ検出を行わせる代わりに、ユーザーが要素を取得しようとしていることがわかります。 [実際のDOMオブジェクト]を取得して、すぐに$([実際のDOMオブジェクト])を返すことができます。

4

2 に答える 2

4

何が異なる目的$で使用するスクリプトを壊すのか推測する必要はありません。このような$ページを考えてみてください(これは実際には野生で見られるものに比べてかなり弱い例ですが、それでも十分に困難を示していると思います):

<div class="bar">
    <div class="foo">
        <div class="bar">
            How will the browser know to select this div with the selector '.bar .foo .bar', without actually running this script the way it is designed?
        </div>
    </div>
</div>
<script>
    window.onload = function(){
        var x = $('.foo');
        console.log(x);
        console.log(x.selector) // '.bar .foo .bar'
    };
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
    var $ = function(){
        return arguments[0];
    };
    $ = (function($){
        return function(selector){
            return jQuery('.bar ' + selector + ' ' + $('.bar'));
        }
    })($);
</script>

どのdivを事前に選択するかをブラウザが知ることは、最適化を超えています。実際、ブラウザは、正しいdivを選択するために、設計された方法でスクリプトを実行する必要があります。

ただし、JavascriptをJavaやC++コードなどのやや低レベルの言語にコンパイルする多くのブラウザ。次に、ブラウザがjQueryをダウンロードしてキャッシュすると、ユーザーのコンピュータにコンパイルされた形式でキャッシュされます。これはjQuery、キャッシュされたスクリプトで発生するため、特定の最適化ではありませんが、のような大きなスクリプトの最適化ではより重要ですjQuery

于 2012-06-22T16:46:47.503 に答える
0

現在、そのような機能を発表しているブラウザベンダーはありません。

ただし、それは可能です。JSエンジン内で最も頻繁に使用されるバージョンのjQueryの解析済みJavascript(IL /バイトコード、エンジンで使用するものは何でも)を参照用に簡単に保存でき、着信関数がその署名と一致する場合は、ネイティブバージョンに置き換えます。

考慮しなければならないのは、それを実装するのにどれだけの時間を費やすかと、最新のJITエンジンに対する速度の向上だけだと思います。それらのいくつかはすでにコードを何らかのネイティブ形式にコンパイルしているため、少なくとも部分的には、実質的な利益があるかどうかははっきりしていません。

于 2012-06-22T16:57:18.987 に答える