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 コンパイラは、実行ごとに非常に異なる動作をしますか? 誰でも手がかりを教えてもらえますか?
ありがとう!