Commit Graph

3 Commits

Author SHA1 Message Date
Clement Skau a196d68145 Revert "[vm, front-end server] Cache generated bytecode using separate file"
This reverts commit 86641d07ae.

Reason for revert: Appears to break Flutter 3H:

- https://logs.chromium.org/logs/dart/buildbucket/cr-buildbucket.appspot.com/8897037674557388176/+/steps/flutter_test_framework_coverage/0/stdout

- https://logs.chromium.org/logs/dart/buildbucket/cr-buildbucket.appspot.com/8897037674557388176/+/steps/flutter_test_framework_tests/0/stdout

- https://logs.chromium.org/logs/dart/buildbucket/cr-buildbucket.appspot.com/8897037674557388176/+/steps/flutter_test_hostonly_devicelab_tests/0/stdout

Original change's description:
> [vm, front-end server] Cache generated bytecode using separate file
> 
> Previously, generated bytecode was cached using metadata in kernel AST.
> When serializaing kernel AST (for subsequent compilations) incremental
> serialization was not used, so AST serialization was considerably
> slower in bytecode mode compared to non-bytecode mode.
> 
> Apparently, metadata is not compatible with incremental serialization
> (https://github.com/dart-lang/sdk/issues/39302).
> 
> This change reimplements caching of generated bytecode using a separate
> 'foo.dill.cache' file near the generated 'foo.dill' and 'foo.dill.ast'.
> AST is now written using incremental serialization both in bytecode
> and non-bytecode modes.
> 
> flutter_test_performance benchmark:
> 
> AST mode:
> 
>   "without_change_elapsed_time_ms": 2615-2652,
>   "implementation_change_elapsed_time_ms": 6292-6394,
>   "interface_change_elapsed_time_ms": 6183-6484,
>   "with_coverage_time_ms": 2723-2834
> 
> Bytecode mode, before this change:
> 
>   "without_change_elapsed_time_ms": 3246-3295,
>   "implementation_change_elapsed_time_ms": 7998-8068,
>   "interface_change_elapsed_time_ms": 7899-8029,
>   "with_coverage_time_ms": 3316-3378
> 
> Bytecode mode, after this change:
> 
>   "without_change_elapsed_time_ms": 2689-2737,
>   "implementation_change_elapsed_time_ms": 7630-7677,
>   "interface_change_elapsed_time_ms": 7724-7917,
>   "with_coverage_time_ms": 2841-2949
> 
> Change-Id: I603d33f49949146cf6620226d810f2f3cb9853a9
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/124592
> Reviewed-by: Ryan Macnak <rmacnak@google.com>
> Commit-Queue: Alexander Markov <alexmarkov@google.com>

TBR=rmacnak@google.com,alexmarkov@google.com

Change-Id: Ib433b68b7de3b08179c9c080a10f62703cd2546d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/124983
Reviewed-by: Clement Skau <cskau@google.com>
Commit-Queue: Clement Skau <cskau@google.com>
2019-11-12 11:11:10 +00:00
Alexander Markov 86641d07ae [vm, front-end server] Cache generated bytecode using separate file
Previously, generated bytecode was cached using metadata in kernel AST.
When serializaing kernel AST (for subsequent compilations) incremental
serialization was not used, so AST serialization was considerably
slower in bytecode mode compared to non-bytecode mode.

Apparently, metadata is not compatible with incremental serialization
(https://github.com/dart-lang/sdk/issues/39302).

This change reimplements caching of generated bytecode using a separate
'foo.dill.cache' file near the generated 'foo.dill' and 'foo.dill.ast'.
AST is now written using incremental serialization both in bytecode
and non-bytecode modes.

flutter_test_performance benchmark:

AST mode:

  "without_change_elapsed_time_ms": 2615-2652,
  "implementation_change_elapsed_time_ms": 6292-6394,
  "interface_change_elapsed_time_ms": 6183-6484,
  "with_coverage_time_ms": 2723-2834

Bytecode mode, before this change:

  "without_change_elapsed_time_ms": 3246-3295,
  "implementation_change_elapsed_time_ms": 7998-8068,
  "interface_change_elapsed_time_ms": 7899-8029,
  "with_coverage_time_ms": 3316-3378

Bytecode mode, after this change:

  "without_change_elapsed_time_ms": 2689-2737,
  "implementation_change_elapsed_time_ms": 7630-7677,
  "interface_change_elapsed_time_ms": 7724-7917,
  "with_coverage_time_ms": 2841-2949

Change-Id: I603d33f49949146cf6620226d810f2f3cb9853a9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/124592
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2019-11-11 19:32:53 +00:00
Ryan Macnak d65a60db00 [vm, bytecode] Populate bytecode cache when initializing an incremental compiler from a kernel file.
AST
"without_change_elapsed_time_ms": 2863,
"implementation_change_elapsed_time_ms": 6009,
"interface_change_elapsed_time_ms": 5888,
"with_coverage_time_ms": 2884

BYTECODE BEFORE
"without_change_elapsed_time_ms": 5216,
"implementation_change_elapsed_time_ms": 8517,
"interface_change_elapsed_time_ms": 8895,
"with_coverage_time_ms": 5462

BYTECODE AFTER
"without_change_elapsed_time_ms": 3384,
"implementation_change_elapsed_time_ms": 8139,
"interface_change_elapsed_time_ms": 8073,
"with_coverage_time_ms": 3473

Change-Id: Ic8e1c183070cb6019ea48f16c04ea5363df41a97
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119620
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2019-10-02 23:53:42 +00:00