Files
sdk/pkg
Jens Johansen b99901c433 [CFE] Speedup dill serialization after slowdown in 548bff1
548bff1 was meant to do less.
It actually turns out slower though:

Before 548bff1:
[ 07:52 | 100.0% | + 2252 | -    0 ]: weak/variance/unconstrained_inference

real    7m58.017s
user    11m15.944s
sys     2m42.890s

=> 209.5 ms per test.

After 548bff1:
[ 08:47 | 100.0% | + 2252 | -    0 ]: weak/variance/unconstrained_inference

real    8m53.362s
user    10m27.086s
sys     1m10.925s

=> 234.0 ms per test.

What it did was, that it introduced - I'm guessing this is the reason -
some non-monomorphism in the serialization code by having sinks of
different types.

Running
`time out/ReleaseX64/dart --enable-asserts pkg/front_end/test/fasta/weak_suite.dart --traceStepTiming -DupdateExpectations=false -DsemiFuzz=false`
(with code changed so it's three shards, running only the first one)

I get numbers like this for writing the dill file though:

Before 548bff1: 0:01:28.369107
 After 548bff1: 0:01:44.803383

(again this is for 1 out of 3 shards, but illustrates the point ---
serialization is slower).

This CL changes this to always serialize into the same sink (in memory),
then - if needed (as in the original CL) - write it to disk.
This gets (again with 1 out of 3 shards) writing the dill down to
0:01:21.872812, and the total run looks like this:

[ 07:18 | 100.0% | + 2252 | -    0 ]: weak/variance/unconstrained_inference

real    7m23.361s
user    10m48.069s
sys     1m30.336s

=> 194.4 ms per test.

(rebased run:

[ 07:13 | 100.0% | + 2254 | -    0 ]: weak/variance/unconstrained_inference

real    7m18.828s
user    10m44.163s
sys     1m31.777s

=> 192.1 ms per test.)

Change-Id: I2906807bbab407fb499aa910afd20f41347bc3c6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/245374
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2022-05-31 08:17:33 +00:00
..

Package validation

The packages in pkg/ are automatically validated on the LUCI CI bots. The validation is largely done by the tools/package_deps package; it can be tested locally via:

dart tools/package_deps/bin/package_deps.dart

Packages which are published

There are several packages developed in pkg/ which are published to pub. Validation of these packages is particularly important because the pub tools are not used for these packages during development; we get our dependency versions from the DEPS file. Its very easy for the dependencies specified in a package's pubspec file to get out of date wrt the packages and versions actually used.

In order to better ensure we're publishing correct packages, we validate some properties of the pubspec files on our CI system. These validations include:

  • that the dependencies listed in the pubspec are used in the package
  • that all the packages used by the source are listed in the pubspec
  • that we don't use relative path deps to pkg/ or third_party/ packages

Packages which are not published

For packages in pkg/ which we do not intend to be published, we put the following comment in the pubspec.yaml file:

# This package is not intended for consumption on pub.dev. DO NOT publish.
publish_to: none

These pubspecs are still validated by the package validation tool. The contents are more informational as the pubspecs for these packages are not consumed by the pub tool or ecosystem.

We validate:

  • that the dependencies listed in the pubspec are used in the package
  • that all the packages used by the source are listed in the pubspec
  • that a reference to a pkg/ package is done via a relative path dependency