快捷方式我的意思是: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();
}
}
第一个代码会慢于第二个代码吗? 我想答案是“是的,第一个是慢的,但没有理由担心它,因为性能上的差异不会很大”。
但是,如果我有数百个带快捷键的功能怎么办?这种差异在某个时刻会变得至关重要吗?
=======
我试过测试它,但结果很奇怪。
当我跑步时:
testWithShortcuts();
testWithoutShortcuts();
然后第一次测试比第二次测试运行得更快。 但如果我按相反的顺序运行它:
testWithoutShortcuts();
testWithShortcuts();
然后第一次测试再次运行得更快。
我不熟悉性能测试。也许我的测试实际上没有做它应该做的事情。
答案 0 :(得分:3)
否强>
是然而,可能的差异是如此之小,以至于在99%的时间内,这种关注是非感性的。
为了推动归位,最好优化可维护性,可理解性和清晰度,然后担心内存中的一些额外指针。事实上,一旦编译成机器码,它们就是相同的指针,它只会影响JIT步骤,这些日子是以毫秒为单位进行测量的。
最好编写可读性代码,并且只有当应用程序开始减慢运行时,一些分析才能找到缓慢的部分并优化该部分。机会是缓慢的问题是完全不同于你做的额外的别名。
答案 1 :(得分:1)
是的,您创建快捷方式的代码会稍慢,但差别不大。
为了使差异显着,将值赋值给变量必须是你正在做的事情的一个相当大的部分。只是调用一个函数比为一个变量赋值(即使函数没有做太多)也要昂贵得多,所以创建快捷方式永远不会很重要。
答案 2 :(得分:0)
不,从不变得至关重要。我很想接受Paul Irish的话,并说你甚至不能允许关心这样的表现;)