dart:async の の中に、 FutureOr という機能があるのだが、
使い方の解説も見ないでの、試して見た。
import 'dart:async';
main() async {
{
int start = new DateTime.now().millisecondsSinceEpoch;
for(int i=0;i<500;i++) {
await doubleAsync(i);
}
int end = new DateTime.now().millisecondsSinceEpoch;
print("#A# ${end -start}");
}
{
int start = new DateTime.now().millisecondsSinceEpoch;
for(int i=0;i<500;i++) {
FutureOr f = doubleOr(i, m:1);
if(f is Future) {
await f;
}
}
int end = new DateTime.now().millisecondsSinceEpoch;
print("#B# ${end -start}");
}
}
Future<int> doubleAsync(int i) async{
return i+i;
}
int doubleSync(int i) {
return i+i;
}
FutureOr<int> doubleOr(int i, {int m:0}) {
if(m == 0) {
return doubleAsync(i);
} else {
return doubleSync(i);
}
}
https://dartpad.dartlang.org/
で試すと、結構速度が違う。
なんとなく
main() asyncOr {
{
int start = new DateTime.now().millisecondsSinceEpoch;
for(int i=0;i<500;i++) {
awaitOr doubleOr(i, m:1);
}
int end = new DateTime.now().millisecondsSinceEpoch;
print("#A# ${end -start}");
}
みたいに、かけたら良いのに.