日前,看到一位朋友在eval json串的,采用了
var a=new Function("return "+json);
a();
的方式 。
想着人家为什么不用eval 于是就做了一个它们之间的 性能测试
<head>
<title>代理测试</title>
<script type="text/javascript">
//var aa="{aa:'xx'}";
var aa="{name:'cola',item:[{age:11},{age:22},{age:23},{age:23}]}";
var now=new Date().getTime();
for(var i=0;i<1000;i++){
eval("("+aa+")");
}
var now1=new Date().getTime();
alert(now1-now);
var now2=new Date().getTime();
for(var i=0;i<1000;i++){
var fn=new Function("return"+aa);
fn();
}
var now3=new Date().getTime();
alert(now3-now2);
</script>
</head>
结果发现在IE中eval是110ms,而fuction是172ms
在FF2中,eval是由1906ms,而fuctnion 187ms
可以看出 FF还是慢于IE6.但是eval在FF是出奇地慢。
可不可以改进一下eval呢?
var morik={};
morik.eval=function(s){
if(navigator.userAgent.toLowerCase().indexOf("msie") > -1)
return eval(s);
else{
var aa=new Function( "return"+s);
return aa.apply(this);
}
};
本想采用
var _e=window.eval;
var eval=fucntion(s){...},
但是改不了作用域,上下文变量通过函数的能达到一定的效果。
便是this却得不到指向运行eval方法的函数指向的。
因为想兼容以前的代码,没有采用eval.apply(this,[])的方法。
有什么好的方法?
prk 08- 09-11
分享到:
相关推荐
废话不多说,直接上测试代码 代码如下:var aa = “{name:’cola’,item:[{age:11},{age:22},{age:23},{age:23}]}”; var now = new Date().getTime(); for (var i = 0; i ”)
使用 TREC 标准化主题集合测试搜索性能。 软件必须以允许 trec_eval 程序生成评估报告的格式将最多前 1000 个搜索结果输出到结果文件中。 trec_eval 期望其输入采用下述格式。 QueryID Q0 DocID Rank Score RunID ...
解析时用到的方法一般是eval或者new function,而目前IE8和Firefox3.1又内置了原生的JSON对象(据说会有一定的性能提升)。那我们在实际使用的时候怎样从这三种方法(因为性能问题,不考虑用javascript实现的解析)...
1.避免使用eval或者Function构造函数 2.避免使用with 3.不要在性能要求关键的函数中使用try-catch-finally 4.避免使用全局变量 5.避免在性能要求关键的函数中使用for-in 6.使用字符串累加计算风格 7.原操作会比函数...
ScopedFunction允许您将范围对象注入到Function构造函数中。 可以在函数主体中访问范围对象的属性,就好像它们是闭合变量一样: ScopedFunction('return s;', { s: 'hello' }) -> 'hello' 。 通过JavaScript语法...
eval.py 评估网络性能代码 test.py 单张图片测试代码 Ps:没写参数接口,所以要改测试的图片就要手动改代码内部文件名了 l2norm.py l2 正则化 Config.py 配置参数 utils.py 工具类 camera.py opencv 调用摄像头测试 ...
eval.py 评估网络性能代码 test.py 单张图片测试代码 Ps:没写参数接口,所以要改测试的图片就要手动改代码内部文件名了 l2norm.py l2 正则化 Config.py 配置参数 utils.py 工具类 camera.py opencv 调用摄像头测试 ...
运行环境(Excution Environment): ...eval.py 评估网络性能代码 test.py 单张图片测试代码 Ps:没写参数接口,所以要改测试的图片就要手动改代码内部文件名了 l2norm.py l2 正则化 Config.py 配置参数 utils.p
eval.py 评估网络性能代码 test.py 单张图片测试代码 Ps:没写参数接口,所以要改测试的图片就要手动改代码内部文件名了 l2norm.py l2 正则化 Config.py 配置参数 utils.py 工具类 camera.py opencv 调用摄像头测试 ...
本文详细介绍Web 开发中关于性能方面需要注意的一些小细节,从 JavaScript 本身着手,介绍了 JavaScript 中需要避免的一些函数的使用和编程规则,比如 eval 的弊端,function scope chain 以及 String 的用法等等
jmd.js 是极小型、高性能 Javascript 模块化管理库(浏览器端)。特点遵循规范,可以像Node.js 一样来写模块代码(参见:AMD、CMD)完全异步,不对源码做任何改动、没eval、setTimeout,全速加载!干干净净,只有一个...
aotjs-JavaScript到LLVM的提前编译 ...不支持运行时eval()或新的Function(“ source”) 内存或执行时间无进程内资源限制 WebAssembly沙箱可以应用硬内存限制 浏览器最终将停止超长循环 要比较的东西 大引擎 Spider
Hive的主要功能是内置eval函数的异步变体,其中传递的表达式将在Node.js事件循环后面的一个工作线程上的单独上下文中执行。 有关更详细的介绍,请参见随附的博客文章。 注意:事实证明,该项目与更流行的非常相似...
一个方法是用eval() 执行拼接的程序字符串,但可能带来性能问题。另一个方法是使用符号属性的方式来访问函数,因为函数都是window对象的属性。 利用window[函数名] 来代表该function对象,用window[函数名]...
有时,更严格的语法是减少潜在错误并提高性能的正确边界。 该工具的范围有限,它不会尝试解决每个人的用例,而是会做特定的事情。 :person_running: 比MustacheJS更快( Micromustache是最快的模板引擎,不需要...
3种方式解析json数据 代码如下: var obj=eval(“(“+traItem.rel+”)... //性能不好 var obj = (new Function(“return ” + traItem.rel))(); var obj = JSON.parse(traItem.rel); //这个要求的格式比较严格
JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp...