V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
PageSpeed 相关文档
为 NGINX 编译 PageSpeed 支持
ngx_pagespeed
Configuring mod_pagespeed Filters
加载性能测试工具
WebPagetest
Gomez
musicq
V2EX  ›  前端优化

JS 是运行多个 function 速度快,还是运行一个 function 速度快?

  •  
  •   musicq · 2015-10-23 11:09:32 +08:00 · 3063 次点击
    这是一个创建于 3325 天前的主题,其中的信息可能已经有所发展或是发生改变。

    像题目所说的,假如我有一个插件,这个插件里有一个函数 myfun 需要几个小方法的支持,这些小方法比如一个 dom 元素的位置计算,一个 dom 元素的样式删改等等,都不是很大、很复杂的函数。

    那么我是把这些小方法直接写在 myfun 这一个函数里面,还是说写成一个个小方法,引进来呢,如果不考虑重用性,这些小方法就只会在 myfun 这里面用一次,不会再别的地方调用。

    那么是那种情况性能更好,或者运行更快?

    // 直接写在函数内
    function myfun() {
      var a = 1,
          b = 2,
          c = 3;
    
      a = a*a;
      b = b*b*b;
      c = c*c*c*c;
    
      return a+b+c;
    }
    
    // 分成一个个小方法
    function myfun() {
      var a = 1,
          b = 2,
          c = 3;
    
      a = a(a);
      b = b(b);
      c = c(c);
    
      return a+b+c;
    }
    
    function a() {
        return 1;
    }
    function b() {
        return 2;
    }
    function c() {
        return 3;
    }
    
    9 条回复    2015-10-23 21:34:11 +08:00
    ipconfiger
        1
    ipconfiger  
       2015-10-23 11:12:34 +08:00
    废话,肯定是写成一坨速度快啊
    musicq
        2
    musicq  
    OP
       2015-10-23 11:16:06 +08:00
    @ipconfiger 那我的方法要是稍微更复杂一点呢,也一样吗
    ipconfiger
        3
    ipconfiger  
       2015-10-23 11:17:48 +08:00
    @musicq 你自己跑一下测个时间会死?
    chairuosen
        4
    chairuosen  
       2015-10-23 11:25:06 +08:00
    在没有卡成狗的情况下,先不要考虑性能优化。
    zhujinliang
        5
    zhujinliang  
       2015-10-23 11:26:17 +08:00   ❤️ 1
    现在的引擎几乎没差别了吧, JIT 这个应该能优化
    再者你都操作 DOM 了,相比之下, call 个函数 p 大点事啊,即使有开销也可以忽略
    fds
        6
    fds  
       2015-10-23 11:26:54 +08:00   ❤️ 1
    函数调用肯定会慢一丁丁点。但一般没什么影响,写逻辑时没必要考虑这个。除非你要循环调用一千万次。
    多用子函数把代码逻辑写清晰更重要。
    learnshare
        7
    learnshare  
       2015-10-23 11:28:55 +08:00
    几乎没差别,没达到数万的 DOM 操作,一般不会有慢的感觉
    dozer47528
        8
    dozer47528  
       2015-10-23 11:31:21 +08:00
    还是太年轻

    代码首先是用来被人读的,然后是给机器跑的。
    adspe
        9
    adspe  
       2015-10-23 21:34:11 +08:00
    写在 prototype 里不是更好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2089 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:29 · PVG 08:29 · LAX 16:29 · JFK 19:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.