今天看JS性能优化中提及不要滥用eval方法,会运行时再次调用解释引擎对内容进行运行。因此想测试下,究竟eval的效率如何
测试中通过直接调用方法传递参数和通过eval方法调用并传递参数,比较不使用eval时和使用eval方式时的差异。
测试代码如下:
测试结果:
IE8:
直接调用:440ms eval:5000ms
FireFox3.6:
直接调用:2ms eval:738ms
Chrome5:
直接调用:6ms eval:234ms
仅对IE8、FireFox3.6、Chrome5三种主流浏览器测试,如果需要了解其他浏览器情况,请自行测试。
结论:
本文不关心不同浏览器执行效率,仅对比同种浏览器eval方法执行效率,从IE8中的测试结果可以看出,二者相差10倍,如果小范围应用尚可接受;从FireFox3.6中的测试结果可以看出,二者相差几百倍,通常情况下不要用eval方法,Chrome5测试结果处于IE和FireFox之间,二者相差数十倍;
eval方法效率还是比较低的,能不用则尽量不用。