2

Android ブラウザーで JavaScript テストを実行しているときに、CPU で実行された命令カウントの数を観察しました。
テスト js コードは html で簡単です。ファイルは、Web サーバーではなく、Android ローカル ディレクトリにあります。

HTMLで:

<html> 
    <head>
       <script type='text/javascript' src='test.js'>
    </head> 
    <body> 
       <div id='content'> ... </div>
       <span> .. </span>
       <div id='logo'> ... </div>
       ...
    </body> 
</html>

test.js で:

   for (i = 0; i < 1000 ; i++) {
        ... 
           $().append("<div id='content2'> ... </div> 
           var temp1 = $(span#content2)
           var temp2 = $(#logo) 
           var temp3 = $(h3.id)
        ...
    }

簡単に言えば、test.js では jQuery を使った .append() などの単純なメソッドが使用されています。この簡単なテスト コードを Android ブラウザーで実行すると、命令の数は一定になるはずですが、実際には実行ごとにさまざまな命令の数があります。バリエーションにはいくつかのパターンがあるかもしれませんが、明確には見えません。

私の最初の推測は、javascript を使用した html の DOM における「非同期」のものでした。そこで、html を次のように変更しました。

<html> 
    <head>

    </head> 
    <body> 
       <div id='content'> ... </div>
       <span> .. </span>
       <div id=''> ... </div?
       ...
    </body> 
     <script type='text/javascript' src='test.js'>
</html>

また、私はこれを試しました

$(document).ready(function() { 
   ... 
       $().append("<div id='content2'> ... </div> 
       var temp1 = $(span#content2)
       var temp2 = $(#logo) 
    ...
});

しかし、私はまだ一貫した数の指示を得ていません。これは非同期の問題が原因ですか? または、DOM に関する jQuery メソッドは、実行時に不確定な動作をしますか? または、JS JIT コンパイラは、実行ごとに非常に異なる動作をしますか? 誰でも手がかりを教えてもらえますか?

ありがとう!

4

1 に答える 1