我一直在努力解决我的一个lib的非常糟糕的性能,它大量使用async / await来处理混合类型的函数,我找不到解释。我能够将代码简化为一个非常简单的测试用例:
=ArrayFormula(UNIQUE(TRANSPOSE(SPLIT(CONCATENATE(Sheet1!A2:B&CHAR(9)),CHAR(9)))))
在实际案例中,我的lib不知道=index(Sheet1!D:D, iferror(match(A2, Sheet1!A:A, 0), match(A2, Sheet1!B:B, 0)))
是同步函数还是异步函数,所以它使用await来支持这两种情况。但与此相比,它使性能极其缓慢:
function a() {
return 'a';
}
async function start() {
await a();
}
start();
我创建了一个jsperf,似乎证实了我的印象:
https://jsperf.com/classic-function-call-vs-await/1
这是一个已知问题吗?我是否正确使用async / await?