我是一名经验丰富的开发人员,但也是一名DART初学者.
我比较了返回Future.sync()
的函数和不返回await
的async
函数,如下所示.
Future<void> measure(Future<int> Function() func) async {
final watch = Stopwatch()..start();
int sum = 0;
for (int i = 0; i < 10000000; i++) {
sum += await func();
}
print('sum:$sum, dt:${watch.elapsed}');
}
void main() async {
int i = 0;
await measure(() => Future<int>.sync(
() {
i++;
return i * 2;
}
));
i = 0;
await measure(
() async {
i++;
return i * 2;
}
);
}
以下是结果.
sum:100000010000000, dt:0:00:00.747827
sum:100000010000000, dt:0:00:00.874562
它们是等同的吗?(我想是的)如果是,为什么后者比前者慢?我在哪里可以找到相关的文件?