javascript函数与新函数
根据这个基准, 创建的函数运行速度快约1000倍。你能评论一下吗javascript函数与新函数,javascript,Javascript,根据这个基准, 创建的函数运行速度快约1000倍。你能评论一下吗 您正在调用的是f1,而不是f2。也就是说,你的第二次测试除了查找参考资料外什么也不做 所有的工作实际上都是作为测试的设置来完成的 我想你想要的其实是: 更新:仔细想想,您可能不想要这个。但无论如何,你的第二次测试什么也没做。在f2;)之后缺少()) 因此,除了新函数慢得多之外,维护函数体也更难;) 使用新函数-语法,对于每个函数,JS编译器都必须启动“eval”函数体字符串-这很慢,应尽可能避免: 每次[…]函数构造函数 在表示
f1
,而不是f2
。也就是说,你的第二次测试除了查找参考资料外什么也不做f2
;)之后缺少()
)
因此,除了
新函数
慢得多之外,维护函数体也更难;) 使用新函数
-语法,对于每个函数,JS编译器都必须启动“eval”函数体字符串-这很慢,应尽可能避免:
每次[…]函数构造函数
在表示
源代码,脚本引擎必须
启动转换发动机的机器
源代码转换为可执行代码。这
性能通常很昂贵——
很容易贵上百倍
而不是简单的函数调用,例如
例子。(马克·塔昆·威尔顿·琼斯)
如果您使用了StackOverflow上的搜索,您会发现wich提供了非常好的详细信息
EDIT:就像Martin在下面的一条评论中所说的,有时新函数的构造函数是一件很棒的事情。列举一些例子:
- 待续
但是:在99%的情况下,如果你可以使用
新函数
,这是一个坏主意——这意味着:要简单地定义任何函数,它必须像它一样,并且没有某种“动态行为”,你应该始终使用“正常”用于加速代码并避免eval
类新函数功能的函数语法
有缺陷的微基准是有缺陷的。除此之外,您主要是在这里测试console.log
的性能:)您完全正确!!!!!在我的电脑上,它在+/-3%范围内交替运行。有几次我得到了两种情况下完全相同的时间。但是新函数运行得更快!你也看到我看到的了吗?当我运行你的测试时,我得到了function(){}
的“10841858/最快”和新函数的“75310/99%较慢”
-不知道你在说什么。使用“新函数”并不是一个坏习惯-这是一个很棒的工具,在需要时使用-人们在不需要时使用它,这是个坏习惯。说使用“新功能”是不好的习惯就像说“开车是不好的习惯”,因为有些人开车时会撞倒别人。也就是说,新函数比常规函数慢,而且永远都是如此。@Martin:我删除了这句话是因为“过于笼统”——但我想我们同意,在“大多数情况下”,我的意思是“定义一个简单的函数,可以使用Function(){}
-语法完全相同”,新函数
-语法是个坏主意。我同意你的观点,在特殊情况下,这种可能性非常大。@oezi:我们完全同意:)