Re: [tq-eng] 🏗️ Fuchsia build tip: split large translation units to make builds faster

9 views
Skip to first unread message

Tamir Duberstein

unread,
Oct 8, 2021, 12:50:09 PM10/8/21
to Jay Zhuang, TQ Netstack Engineering, fidl...@fuchsia.dev, Randall Bosetti, TQ Engineering
Wrong again.

On Fri, Oct 8, 2021 at 12:39 PM Tamir Duberstein <tam...@google.com> wrote:
Oops, tq-fidl-bindings doesn't exist.

On Fri, Oct 8, 2021 at 12:38 PM Tamir Duberstein <tam...@google.com> wrote:
Neat work.

Interestingly the FIDL outputs for fuchsia.posix.socket are red in both spreadsheets. This library contains a very large protocol so there isn't much we can do on the protocol-authoring side.

Could we split the generated code implementation into multiple translation units?

On Fri, Oct 8, 2021 at 12:26 PM Jay Zhuang <jayz...@google.com> wrote:
Hey Randall, we created tools to study CQ builds in aggregate, any TQers can generate a report for any-sized sample of builds from CQ. We have some data from late September, which might be outdated already, if you are interested check out the trixes for core.x64-asan (incremental) and core.x64-asan-clean.

Thanks,
Jay

On Fri, Oct 8, 2021 at 11:57 AM Randall Bosetti <r...@google.com> wrote:
Jay, is there a list of the (approximate) top N targets by drag? I have hunches about where to look, but those could be very wrong.

Thanks,
 -rlb


On Fri, Oct 8, 2021 at 8:43 AM Jay Zhuang <jayz...@google.com> wrote:

Hi fellow TQ engineers,


TL;DR: Breaking large translation units1 into smaller ones results in faster Fuchsia builds ⚡.


Why should you care?


  •  Faster incremental builds when you're modifying your code

  •  Faster builds on CQ, which helps with everyone's productivity


How much faster, you ask? A recent split of a large target made core.x64-asan on CQ 25% faster 😲!


So next time you see a large translation unit in a BUILD.gn, you know what to do! setui and component_manager are already lined up for speedups!


Don’t hesitate to reach out to fuchsia-build-team@ if you need any help or suggestions!


Thanks,

Jay on behalf of the build team


1 Translation units: translation units are the result of compiling an individual C++ source file (a.k.a an object file), or a single Rust crate.

Reply all
Reply to author
Forward
0 new messages