mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 09:43:08 +00:00
6b3d1752fa
When awaiting a value which is not a Future or a completed built-in _Future, 'await' implementation can bypass heavyweight _Future/_FutureListener machinery and schedule micro-tasks directly. Benchmarks: JIT, x64: AsyncLiveVars.* +46-54% (bigger is better) Calls.AwaitAsyncCall -46% (less is better) Calls.AwaitAsyncCallInstanceTargetPolymorphic -46% Calls.AwaitAsyncCallClosureTargetPolymorphic -45% Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -45% Calls.AwaitFutureOrCall -60% Calls.AwaitFutureOrCallInstanceTargetPolymorphic -60% Calls.AwaitFutureOrCallClosureTargetPolymorphic -59% JIT, ia32: AsyncLiveVars.* +43-52% (bigger is better) Calls.AwaitAsyncCall -42% (less is better) Calls.AwaitAsyncCallInstanceTargetPolymorphic -42% Calls.AwaitAsyncCallClosureTargetPolymorphic -41% Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -39% Calls.AwaitFutureOrCall -55% Calls.AwaitFutureOrCallInstanceTargetPolymorphic -54% Calls.AwaitFutureOrCallClosureTargetPolymorphic -53% JIT, arm: AsyncLiveVars.* +64-71% (bigger is better) Calls.AwaitAsyncCallInstanceTargetPolymorphic -51% (less is better) Calls.AwaitAsyncCallClosureTargetPolymorphic -47% Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -48% Calls.AwaitFutureOrCall -64% Calls.AwaitFutureOrCallInstanceTargetPolymorphic -64% Calls.AwaitFutureOrCallClosureTargetPolymorphic -59% JIT, arm64: AsyncLiveVars.* +65-78% (bigger is better) Calls.AwaitAsyncCall -51% (less is better) Calls.AwaitAsyncCallInstanceTargetPolymorphic -51% Calls.AwaitAsyncCallClosureTargetPolymorphic -50% Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -49% Calls.AwaitFutureOrCall -69% Calls.AwaitFutureOrCallInstanceTargetPolymorphic -68% Calls.AwaitFutureOrCallClosureTargetPolymorphic -67% AOT, x64: AsyncLiveVars.* +55-61% (bigger is better) Calls.AwaitAsyncCall -47% (less is better) Calls.AwaitAsyncCallInstanceTargetPolymorphic -46% Calls.AwaitAsyncCallClosureTargetPolymorphic -47% Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -46% Calls.AwaitFutureOrCall -59% Calls.AwaitFutureOrCallInstanceTargetPolymorphic -59% Calls.AwaitFutureOrCallClosureTargetPolymorphic -58% AOT, arm: AsyncLiveVars.* 54-66% (bigger is better) Calls.AwaitAsyncCall -46-51% (less is better) Calls.AwaitAsyncCallInstanceTargetPolymorphic -46-50% Calls.AwaitAsyncCallClosureTargetPolymorphic -46-52% Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -45-50% Calls.AwaitFutureOrCall -63-68% Calls.AwaitFutureOrCallInstanceTargetPolymorphic -63-66% Calls.AwaitFutureOrCallClosureTargetPolymorphic -63-67% AOT, arm64: AsyncLiveVars.* +53-66% (bigger is better) Calls.AwaitAsyncCall -50-51% (less is better) Calls.AwaitAsyncCallInstanceTargetPolymorphic -50% Calls.AwaitAsyncCallClosureTargetPolymorphic -50-51% Calls.AwaitFutureOrCallInstanceTargetPolymorphicManyAwaits -49-50% Calls.AwaitFutureOrCall -66-68% Calls.AwaitFutureOrCallInstanceTargetPolymorphic -66-68% Calls.AwaitFutureOrCallClosureTargetPolymorphic -63-67% TEST=ci Issue: https://github.com/dart-lang/sdk/issues/48378 Change-Id: I65e3702fcd816ee3fee876ff442b9887c035b1ec Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/243102 Reviewed-by: Lasse Nielsen <lrn@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com> |
||
---|---|---|
.. | ||
bin | ||
lib | ||
tests | ||
tool | ||
web | ||
.gitignore | ||
analysis_options.yaml | ||
BUILD.gn | ||
HACKING.md | ||
observatory_sources.gni | ||
pubspec.yaml | ||
update_sources.py |