在 JS 中创建快捷方式会降低性能吗

Does creating shortcuts in JS slows performance down

我所说的快捷方式是指像这样的表达式:var do = some.thing.do

例如我有这个带快捷方式的代码:

MyModule3 = {
  doSmth3 : function() {
    var doSmth1 = MyModule1.doings.doSmth1,
        doSmth2 = MyModule2.doings.doSmth2;

    doSmth1();
    doSmth2();
  }
}

而这个没有捷径:

MyModule3 = {
  doSmth3 : function() {
    MyModule1.doings.doSmth1();
    MyModule2.doings.doSmth2();
  }
}

第一个代码会比第二个慢吗? 我想答案是 "yes, the first one is slower, but there is no reason to worry about it, because difference in performance will not be significant".

但是如果我有数百个带快捷键的函数怎么办?这种差异会在某个时刻变得至关重要吗?

=======

我试图测试它,但我得到了奇怪的结果。

当我运行:

testWithShortcuts();
testWithoutShortcuts();

然后第一个测试 运行s 比第二个快。 但是如果我 运行 它的顺序相反:

testWithoutShortcuts();  
testWithShortcuts();

然后再次测试 运行s 更快。

我对性能测试不熟悉。也许我的测试实际上没有做它应该做的事情。

不,那 永远不会 变得关键。我很想接受 Paul Irish 的话,说你甚至 allowed 关心这样的事情的表现 ;)

TL;DR

没有

真实答案

是的但是,可测量的差异是如此之小,以至于在 99% 的时间里,这种担忧是没有意义的。

讨论

要明确一点,最好针对可维护性、可理解性和清晰性进行优化,然后再担心内存中的一些额外指针。事实上,一旦编译为机器代码,它们就是相同的指针,它只会影响 JIT 步骤,这些天以毫秒为单位进行测量。

最好为可读性编写代码,并且仅当应用程序开始变慢一点时 运行 一些分析会找到缓慢的部分并优化该部分。很可能慢速问题与您制作的额外 别名 完全不同。

是的,创建快捷方式的代码会稍微慢一些,但差别不大。

要使差异显着,将值分配给变量必须是您所做工作的相当大的一部分。仅仅调用一个函数比给一个变量赋值要昂贵得多(即使这个函数做的不多),所以创建快捷方式永远不会很重要。