Find a file
Jens Johansen e491bc5d86 Allow to specify what dill file to initialize from
This CL updates the frontend_server to allow specifying what dill
file to initialize from.

Normally, it tries to initialize from the same dill file as is the
output. This is fine in many cases (e.g. flutter run always says it
should output to build/app.dill): The first time it compiles
everything, subsequent times (across restarts) it only recompiles
what's needed.

When running tests, however, the output is in a temporary directory,
so it doesn't work across restarts. The startup time for tests is
always rather high, because it always has to recompile everything.

This CL updates the frontend_server to allow specifying what dill
file to initialize from. Flutter can thus save the compiled test
file in a centralized location (e.g. build/test.dill) and load from
that across restarts.

Plumbing this into flutter yields the following result, when running
a single test (the one automatically created when creating a new
flutter project):

Before: ~5.5 seconds
Now, first run: ~5.5 second (unchanged)
Now, subsequent runs: ~3.4 seconds

Approximate breakdown:

Startup cost (e.g. if there's no test directory):        ~ 800 ms
Starting up the actual frontend server: ~150 ms
Reading source from old dill, loading all relevant files
and invalidating source:                                 ~ 300 ms
Compiling everything (or, rather, nothing as it's all
from the dill at this point):                            ~ 650 ms
Serializing:                                             ~ 250 ms
Copying files:                                           ~  50 ms
Running the actual test:                                 ~1100 ms

Total:                                                   ~3300 ms

`time flutter test --local-engine=host_debug --preview-dart-2`
says ~3.4 seconds...

To compare, --no-preview-dart-2 takes ~2.2 seconds,
so dart2 still has a (significantly) higher startup cost.

Moves the needle on https://github.com/flutter/flutter/issues/15767.

Change-Id: I36a2d05bc76e0193d369df42eb3b9f08416dd78f
Reviewed-on: https://dart-review.googlesource.com/51820
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-05-17 06:49:41 +00:00
.github Add an issue template to the SDK 2018-04-05 13:05:09 +00:00
build Use %systemroot% instead of hardcoded 'C:\Windows' 2018-05-07 15:40:00 +00:00
client Remove old annotated_steps buildbot scripts and dispatcher 2017-05-23 16:17:02 +02:00
docs Update spec on interface, mixin and async. 2018-05-16 19:09:52 +00:00
pkg Allow to specify what dill file to initialize from 2018-05-17 06:49:41 +00:00
runtime [fuchsia] Update FIDL include paths. 2018-05-16 20:41:04 +00:00
samples [infra] Keep comments intact when updating status files. 2018-04-10 19:03:21 +00:00
samples-dev Make cast do the same things as retype. 2018-05-09 08:00:08 +00:00
sdk [js_runtime] Avoid more casts 2018-05-17 05:45:21 +00:00
tests [dart2js] Remove checks from inlined static call sites 2018-05-17 00:03:24 +00:00
third_party [vm] Roll tcmalloc forward 2018-05-15 21:07:57 +00:00
tools Reland "[vm/kernel] Enable kernel2kernel "constants" transformation in AOT mode (after running TFA)" 2018-05-16 12:48:38 +00:00
utils [GN] Fix dartanalyzer_aot target 2018-05-03 23:50:04 +00:00
.clang-format VM: Re-format to use at most one newline between functions 2017-07-13 08:08:37 -07:00
.gitattributes Avoid crash on EOF error in file with Windows line encoding 2018-04-09 12:16:20 +00:00
.gitignore Git ignore vscode project files. 2017-03-23 15:26:06 -07:00
.gn Starting work on full GN build 2016-09-23 07:47:36 -07:00
.mailmap
.packages Readd web-components: it is used for unit tests of dart:html 2018-04-03 20:13:19 +00:00
AUTHORS
BUILD.gn [VM] Make runtime-kernel the default build target. This ensures that kernel_services snapshot is built and available. 2018-05-14 14:59:43 +00:00
CHANGELOG.md Mark MirrorsUsed as deprecated. 2018-05-16 09:51:18 +00:00
codereview.settings Update codereview.settings to Gerrit (dart-review.googlesource.com) 2017-09-04 12:52:09 +00:00
dartdoc_options.yaml Update dartdoc to v0.18.0 and tag library categories. 2018-03-27 16:19:34 +00:00
DEPS Remove barback from the SDK. 2018-05-16 00:01:52 +00:00
LICENSE Remove the Dromaeo and TodoMVC samples. 2016-01-11 13:09:26 -08:00
PATENTS
PRESUBMIT.py Fix presubmit on Windows. Dart executable is not called .bat 2018-05-02 08:40:59 +00:00
README.dart-sdk
README.md [gardening] Whitespace change to trigger bots. 2017-04-28 10:08:58 -07:00
WATCHLISTS Creates a watchlist for sdk/lib/_http and adds me to it 2018-01-02 18:39:53 +00:00

Dart

Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.

Using Dart

Visit the dartlang.org to learn more about the language, tools, getting started, and more.

Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.

Building Dart

If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.

There are more documents on our wiki.

Contributing to Dart

The easiest way to contribute to Dart is to file issues.

You can also contribute patches, as described in Contributing.

License & patents

See LICENSE and PATENTS.