On Wed, Aug 29, 2018, at 9:08 AM, Boris Zbarsky wrote:
> > https://taskcluster-artifacts.net/CLtUuQugTjKONONL4hh5Nw/0/public/14day_report.html
> 
> So my main conclusion from looking at this data is that anything that 
> causes us to rebuild any rust stuff is just painful...

I don't think that's *entirely* the case, but it's certainly not far off. The 
first thing to note is that all of this data is derived from the tup build 
database, so it's possible that there are things here that are artifacts of our 
tup build implementation.

The #1 item on that list is Cargo.lock, which is there because it was changed 8 
times in 14 days and a lot of work happens if you change it. In the general 
case, updating a crate version should only cause us to rebuild everything in 
its dependency tree, but I don't know if:
a) The tup build does unnecessary work in cases where crates are updated but it 
shouldn't need to rebuild things like gkrust. The cargo build plan integration 
is pretty new, so it's possible it has some rough edges. This is worth looking 
into!
b) What crates are actually being updated. This data ought to be easy to get. 
If we are in fact regularly updating crates that get compiled into gkrust then 
yeah, we're probably going to have a bad time.

The source files under servo/components/style/gecko/ seem to be responsible for 
a fair amount of churn, which I assume is mostly "the style crate is expensive 
to compile" + "these are the source files in the style crate that get changed 
frequently". Obviously folks have put a lot of work into making the Rust 
compiler faster, but there may be other changes to the style crate that could 
mitigate this, like splitting it into sub-crates so that not all of the code 
needs to get rebuilt every time. Additionally, this data doesn't take rustc's 
incremental compilation feature into account--if you have a previously-built 
objdir and you pull in some new changes that touch those source files rustc 
ought to be able to compile the style crate more quickly than it would for a 
clean build.

It would probably be useful to enhance this report with a way to drill down and 
find out *why* a particular file is so expensive, like "what set of things get 
rebuilt if you touch this file?" That might wind up being overly-verbose in the 
case of things like jsapi.h that gets included in a zillion source files, but 
maybe we can figure out a useful summary.

-Ted
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to