commit | 47b57e8995478243e99553160e139f51b296b34f | [log] [tgz] |
---|---|---|
author | Jens Johansen <jensj@google.com> | Wed Apr 01 12:28:34 2020 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Wed Apr 01 12:28:34 2020 +0000 |
tree | f17736794b36089c500348c125201193e3db420c | |
parent | 278a2db4df1a1fef349b89aeaca367dc7463bab7 [diff] |
[CFE] Cache checkInheritanceConflict calculation When compiling a big internal app with the NNBD SDK there's a big time regression. This is a first "poor-mans fix" that "fixes" it via caching which probably is not the best solution, but does the trick. Without change ============== Without NNBD platform: $ out/ReleaseX64/dart pkg/front_end/tool/_fasta/compile.dart --target=dart2js --platform=out/ReleaseX64/dart2js_platform.dill -v bigapp.dart [...] 0:00:14.238352: Built class hierarchy in 1663ms. [...] 0:00:55.871356: Wrote component to bigapp.dart.dill in 5690ms. With NNBD platform: $ out/ReleaseX64/dart pkg/front_end/tool/_fasta/compile.dart --target=dart2js --platform=out/ReleaseX64NNBD/dart2js_platform.dill -v bigapp.dart [...] 0:04:41.842548: Built class hierarchy in 268716ms. [...] 0:05:22.120455: Wrote component to bigapp.dart.dill in 5407ms. So: Big regression; it takes almost 4.5 minutes to built the class hierarchy and almost as long extra to compile as a whole. With change =========== Without NNBD platform: $ out/ReleaseX64/dart pkg/front_end/tool/_fasta/compile.dart --target=dart2js --platform=out/ReleaseX64/dart2js_platform.dill -v bigapp.dart [...] 0:00:15.255893: Built class hierarchy in 2175ms. [...] 0:00:55.203753: Wrote component to bigapp.dart.dill in 5306ms. So: Without the NNBD platform there's basically no change. With NNBD platform: $ out/ReleaseX64/dart pkg/front_end/tool/_fasta/compile.dart --target=dart2js --platform=out/ReleaseX64NNBD/dart2js_platform.dill -v bigapp.dart [...] 0:00:15.864901: Built class hierarchy in 2574ms. [...] 0:00:55.640201: Wrote component to bigapp.dart.dill in 5363ms. So: With the NNBD platform, the speedup is significant and there's basically no change between using the NNBD platform or not. Change-Id: I74993710a34f08f69421b03f2682ff8418af7599 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/141982 Reviewed-by: Johnni Winther <johnniwinther@google.com> Commit-Queue: Jens Johansen <jensj@google.com>
Dart is:
Optimized for UI: Develop with a programming language specialized around the needs of user interface creation
Productive: Make changes iteratively: use hot reload to see the result instantly in your running app
Fast on all platforms: Compile to ARM & x64 machine code for mobile, desktop, and backend. Or compile to JavaScript for the web
Dart's flexible compiler technology lets you run Dart code in different ways, depending on your target platform and goals:
Dart Native: For programs targeting devices (mobile, desktop, server, and more), Dart Native includes both a Dart VM with JIT (just-in-time) compilation and an AOT (ahead-of-time) compiler for producing machine code.
Dart Web: For programs targeting the web, Dart Web includes both a development time compiler (dartdevc) and a production time compiler (dart2js).
Dart is free and open source.
See LICENSE and PATENT_GRANT.
Visit the dart.dev to learn more about the language, tools, getting started, and more.
Browse pub.dev for more packages and libraries contributed by the community and the Dart team.
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.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.