时间太短,时间加大,看看区别在哪里 呵呵 test <script> var d= new Date().getTime() eval("function test(){}"); </script> <script> //这里开始进行1万次test方法调用. for(var i=0;i <100000;i++){ test(); } var d2 = new Date().getTime(); alert(d2-d); </script> <script> var d3= new Date().getTime(); function test(){} </script> <script> //这里开始进行1万次test方法调用. for(var i=0;i <100000;i++){ test(); } var d4= new Date().getTime(); alert(d4-d3);</script>
eval 及 json赋值的性能测试 代码: <script> var n=200000; function test(){ var s; var t1=(new Date()).getTime(); for(var i=0;i<n;i++) s=1000*1000/1000; var t2=(new Date()).getTime(); return (t2-t1); } function evaltest(){ var s; var t1=(new Date()).getTime(); for(var i=0;i<n;i++) eval("s=1000*1000/1000;"); var t2=(new Date()).getTime(); return (t2-t1); } function jsontest(){ var s; var t1=(new Date()).getTime(); for(var i=0;i<n;i++) s={"DataCount":5000,"jsonRoot":[{"title":"标题","staff":{"UserName":"test","Age":20},"id":2}]}; var t2=(new Date()).getTime(); return (t2-t1); } function jsonevaltest(){ var s; var t1=(new Date()).getTime(); for(var i=0;i<n;i++) eval('s={"DataCount":5000,"jsonRoot":[{"title":"标题","staff":{"UserName":"test","Age":20},"id":2}]};'); var t2=(new Date()).getTime(); return (t2-t1); } document.write ("<br>算术运算测试(正常):"+test()+" 毫秒"); document.write ("<br>算术运算测试(eval):"+evaltest()+" 毫秒<br>"); document.write ("<br>JSON赋值测试(正常):"+jsontest()+" 毫秒"); document.write ("<br>JSON赋值测试(eval):"+jsonevaltest()+" 毫秒"); </script>在 Athlon64 3000+ IE6 上运行结果:算术运算测试(正常):121 毫秒 算术运算测试(eval):1969 毫秒JSON赋值测试(正常):1906 毫秒 JSON赋值测试(eval):4922 毫秒 UID2119 帖子5 精华0 积分75 阅读权限1 在线时间7 小时 注册时间2007-11-8 最后登录2007-12-8 查看详细资料 TOP
经过eval之后,里面的串已经被 JScript 分析器进行分析和执行了.
而是否经过eval来处理,则仅仅是多了一步是直接由jscript分析器来处理,还是将字符串作为源代码来动态执行。
其他见解继续...
test
<script>
var d= new Date().getTime()
eval("function test(){}");
</script>
<script>
//这里开始进行1万次test方法调用.
for(var i=0;i <100000;i++){
test();
}
var d2 = new Date().getTime();
alert(d2-d);
</script> <script>
var d3= new Date().getTime();
function test(){}
</script>
<script>
//这里开始进行1万次test方法调用.
for(var i=0;i <100000;i++){
test();
}
var d4= new Date().getTime();
alert(d4-d3);</script>
eval 及 json赋值的性能测试
代码:
<script>
var n=200000;
function test(){
var s;
var t1=(new Date()).getTime();
for(var i=0;i<n;i++)
s=1000*1000/1000;
var t2=(new Date()).getTime();
return (t2-t1);
}
function evaltest(){
var s;
var t1=(new Date()).getTime();
for(var i=0;i<n;i++)
eval("s=1000*1000/1000;");
var t2=(new Date()).getTime();
return (t2-t1);
}
function jsontest(){
var s;
var t1=(new Date()).getTime();
for(var i=0;i<n;i++)
s={"DataCount":5000,"jsonRoot":[{"title":"标题","staff":{"UserName":"test","Age":20},"id":2}]};
var t2=(new Date()).getTime();
return (t2-t1);
}
function jsonevaltest(){
var s;
var t1=(new Date()).getTime();
for(var i=0;i<n;i++)
eval('s={"DataCount":5000,"jsonRoot":[{"title":"标题","staff":{"UserName":"test","Age":20},"id":2}]};');
var t2=(new Date()).getTime();
return (t2-t1);
}
document.write ("<br>算术运算测试(正常):"+test()+" 毫秒");
document.write ("<br>算术运算测试(eval):"+evaltest()+" 毫秒<br>");
document.write ("<br>JSON赋值测试(正常):"+jsontest()+" 毫秒");
document.write ("<br>JSON赋值测试(eval):"+jsonevaltest()+" 毫秒");
</script>在 Athlon64 3000+ IE6 上运行结果:算术运算测试(正常):121 毫秒
算术运算测试(eval):1969 毫秒JSON赋值测试(正常):1906 毫秒
JSON赋值测试(eval):4922 毫秒
UID2119 帖子5 精华0 积分75 阅读权限1 在线时间7 小时 注册时间2007-11-8 最后登录2007-12-8 查看详细资料
TOP
P4 2.6c ,ie6算术运算测试(正常):141 毫秒
算术运算测试(eval):3953 毫秒JSON赋值测试(正常):3891 毫秒
JSON赋值测试(eval):9343 毫秒
同意!<input type="text" id="a" value="0">
<input type="text" id="b" value="0"><script>
var aT = new Date();
for(var i=0;i <10000;i++){
eval("function test1(){document.getElementById('a').value++}");
test1();
}
document.getElementById('a').value += ","+(new Date()-aT);var bT = new Date();
for(var i=0;i <10000;i++){
function test(){document.getElementById('b').value++}
test();
}
document.getElementById('b').value += ","+(new Date()-bT);
</script>
为什么看到的javascript很多文件都是eval(function(){ 。})这样写的啊。