为了账号安全,请及时绑定邮箱和手机立即绑定

一个关于js优化的思考

一个关于js优化的思考

千巷猫影 2019-03-15 23:15:22
关于函数变量以下两个例子哪个会更优化一点var i = 0, len = 1000*1000*1000, x = 2, y = true, z ='3.2';//demo0var demo = function(a, b, c) {    return a*b*c;   };console.time('demo0');for (i = 0 ;i < len; i++) {    demo(x, y ,z);}console.timeEnd('demo0'); //demo1var demo = (function(a, b, c) {    return a*b*c;   }).bind(null, x, y ,z);console.time('demo1');for (i = 0 ;i < len; i++) {    demo();}console.timeEnd('demo1'); //demo2demo = function() {    var a = x,        b = y,        c = z;    return a*b*c;   };console.time('demo2');for (i = 0 ;i < len; i++) {    demo();}console.timeEnd('demo2');这三个例子的区别在于变量。实际上第三种最快。为什么呢?我在nodejs里执行的结果在浏览器中执行的结构
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

把len放大(最起码到万数量级),再运行代码,看结果。500次的运行偶然性太高了。


查看完整回答
反对 回复 2019-03-19
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

浏览器下执行 len = 100010001000 次数 (引用和内嵌 差不多)
demo_0: 2446.34716796875ms
demo_1: 2433.719970703125ms
demo_2: 2428.6591796875ms

node下执行

https://img1.sycdn.imooc.com//5c904fc60001ec4601960051.jpg

查看完整回答
反对 回复 2019-03-19
  • 2 回答
  • 0 关注
  • 336 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信