在 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 步骤,这些天以毫秒为单位进行测量。
最好为可读性编写代码,并且仅当应用程序开始变慢一点时 运行 一些分析会找到缓慢的部分并优化该部分。很可能慢速问题与您制作的额外 别名 完全不同。
是的,创建快捷方式的代码会稍微慢一些,但差别不大。
要使差异显着,将值分配给变量必须是您所做工作的相当大的一部分。仅仅调用一个函数比给一个变量赋值要昂贵得多(即使这个函数做的不多),所以创建快捷方式永远不会很重要。
我所说的快捷方式是指像这样的表达式: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 步骤,这些天以毫秒为单位进行测量。
最好为可读性编写代码,并且仅当应用程序开始变慢一点时 运行 一些分析会找到缓慢的部分并优化该部分。很可能慢速问题与您制作的额外 别名 完全不同。
是的,创建快捷方式的代码会稍微慢一些,但差别不大。
要使差异显着,将值分配给变量必须是您所做工作的相当大的一部分。仅仅调用一个函数比给一个变量赋值要昂贵得多(即使这个函数做的不多),所以创建快捷方式永远不会很重要。