Posted at
DartDay 7

なぞの FutureOr

More than 1 year has passed since last update.

dart:async の の中に、 FutureOr という機能があるのだが、

使い方の解説も見ないでの、試して見た。

https://api.dartlang.org/stable/1.24.3/dart-async/FutureOr-class.html

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}");
}

みたいに、かけたら良いのに.