我观察到在 Android 浏览器上运行 javascript 测试时在 cpu 上执行的指令计数。
测试js代码在html中很简单。这些文件在 android 本地目录中,而不是在 webserver 中。
在 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 浏览器上运行这个简单的测试代码时,我认为我应该有一致的指令数,但实际上,每次运行我都有不同的指令数。它可能在变化中有一些模式,但似乎并不清楚。
我最初的猜测是 DOM 中带有 javascript 的 html 中的“异步”事物。所以,我改变了这样的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 编译器在每次运行中都有非常不同的行为?谁能给我一些线索?
谢谢!