Javascript 性能,重新创建函数还是绑定?
Javascript performance, recreate function or bind then?
我的应用程序是一个本地服务器,每秒接收大约 2/3 个请求。
在每次请求时,它存储和更新数据、处理一些计算、更新视图(反应),...
我想知道当我必须使用闭包时什么更快:
只需在我需要的地方创建函数即可:
var parentValue = 'ok';
randomAsyncFunction(function() {
console.log(parentValue);
}
创建一个 "global" 函数,然后将回调与所需的值绑定:
function testCallback(value) {
console.log(value);
}
var parentValue = 'ok';
randomAsyncFunction(testCallback.bind(undefined, parentValue));
注:这些伪代码每秒会执行2/3次。对于第二个示例,testCallback
函数将被创建一次,并且将调用绑定而不是重新创建函数。
那么,使用第二个例子是好是坏?
bind
和闭包函数表达式都创建了一个新的函数对象。它们在性能上的差异可以忽略不计。如果您真的足够在意,运行 使用您的实际代码和真实数据进行基准测试,看看哪个解决方案更快。
在您的情况下,您应该只关心哪个解决方案更具可读性和可维护性。 None 严格来说是好是坏,你必须自己决定你更喜欢哪一个。
我的应用程序是一个本地服务器,每秒接收大约 2/3 个请求。
在每次请求时,它存储和更新数据、处理一些计算、更新视图(反应),...
我想知道当我必须使用闭包时什么更快:
只需在我需要的地方创建函数即可:
var parentValue = 'ok';
randomAsyncFunction(function() { console.log(parentValue); }
创建一个 "global" 函数,然后将回调与所需的值绑定:
function testCallback(value) { console.log(value); }
var parentValue = 'ok'; randomAsyncFunction(testCallback.bind(undefined, parentValue));
注:这些伪代码每秒会执行2/3次。对于第二个示例,testCallback
函数将被创建一次,并且将调用绑定而不是重新创建函数。
那么,使用第二个例子是好是坏?
bind
和闭包函数表达式都创建了一个新的函数对象。它们在性能上的差异可以忽略不计。如果您真的足够在意,运行 使用您的实际代码和真实数据进行基准测试,看看哪个解决方案更快。
在您的情况下,您应该只关心哪个解决方案更具可读性和可维护性。 None 严格来说是好是坏,你必须自己决定你更喜欢哪一个。