JavaScript性能:调用vs Apply

时间:2015-10-10 14:12:22

标签: javascript node.js performance

func.apply(obj, params)为空数组或func.call(obj)时,从params切换到null是否有性能优势?

我的意思是,调用func.call(obj)比调用func.apply(obj, null)更快?

我最感兴趣的是NodeJS 4.x下的表现。

这是一种必须进行大量此类调用的算法。

3 个答案:

答案 0 :(得分:3)

在此页面上有一个比较。 https://jsperf.com/call-apply-segu 我的机器上的通话速度更快。

答案 1 :(得分:1)

哈,有趣的是:看起来#!/usr/local/bin/php <?php $thread = $_SERVER['argv'][1]; for($i=0;$i<1000000;$i++) { //Soecket operations echo $thread."). ".$i.PHP_EOL; } apply慢。 8 - )

call

答案 2 :(得分:-1)

基本上,他们会采取相同的步骤:

  

Function.prototype.apply (thisArg, argArray)

     
      
  1. 如果IsCallable func )为false,则抛出 TypeError 异常。
  2.   
  3. 如果 argArray null 未定义,则      
        
    1. 返回调用 func 的[[Call]]内部方法的结果,提供 thisArg 作为 this 值和一个空列表论证。
    2.   
  4.   

  

Function.prototype.call (thisArg [ , arg1 [ , arg2, … ] ] )

     
      
  1. 如果IsCallable func false ,则抛出 TypeError 例外。
  2.   
  3. argList 为空List
  4.   
  5. 如果使用多个参数调用此方法,则从 arg1 开始按从左到右的顺序追加每个参数作为最后一个参数    argList
  6. 的元素   
  7. 返回调用 func 的[[Call]]内部方法的结果,提供 thisArg 作为 this 值和 argList 作为参数列表。
  8.   

因此差异(如果有的话)应该依赖于实现,并且可以忽略不计。