From dc8841d8a98122d762ec21ed119dbcc2f78e7300 Mon Sep 17 00:00:00 2001 From: Jinho Bang Date: Sun, 14 Oct 2018 21:59:49 +0900 Subject: [PATCH] Improve build performance by using jumbo build The Jumbo build is the Chromium implementation of a Unity build system aimed at dramatically lowering the compilation times. It can be easily enabled with `use_jumbo_build=true`. When you enable this, the biggest problem is that name conflicts can occur between multiple c++ files merged, which is no problem for `deno`. Because the V8's Jumbo build is managed in upstream, and `deno` will just pick up a stable build V8. So, this patch enables Jumbo build by default. After this patch, the total number of build objects are halved. (1014 -> 493) FYI, the following results are tested in my local environment. - IMAC 5K, i5 4-cores, 24GB, 512GB SSD Test result1: No use ccache | |Jumbo build without ccache|Normal build without ccache| |---|--------------------------|---------------------------| | 1 | 0:05:26 | 0:11:31 | | 2 | 0:05:24 | 0:11:29 | | 3 | 0:05:25 | 0:11:28 | | 4 | 0:05:24 | 0:11:29 | | 5 | 0:05:26 | 0:11:29 | |AVG| 0:05:25 | 0:11:29 | Test result2: Use ccache | |Jumbo build with ccache|Normal build with ccache| |---|-----------------------|------------------------| | 1 | 0:01:38 | 0:01:13 | | 2 | 0:01:45 | 0:01:21 | | 3 | 0:01:39 | 0:02:20 | | 4 | 0:01:45 | 0:02:16 | | 5 | 0:01:42 | 0:02:19 | | 6 | 0:01:17 | 0:01:11 | | 7 | 0:01:01 | 0:01:48 | | 8 | 0:00:54 | 0:01:57 | | 9 | 0:01:03 | 0:02:15 | |10 | 0:01:36 | 0:02:19 | |AVG| 0:01:26 | 0:01:54 | Refs: https://chromium.googlesource.com/chromium/src/+/master/docs/jumbo.md --- .gn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gn b/.gn index bebb5388..07070a11 100644 --- a/.gn +++ b/.gn @@ -32,6 +32,10 @@ default_args = { treat_warnings_as_errors = false rust_treat_warnings_as_errors = true + # Enable Jumbo build by default + # https://chromium.googlesource.com/chromium/src/+/master/docs/jumbo.md + use_jumbo_build = true + # https://cs.chromium.org/chromium/src/docs/ccache_mac.md clang_use_chrome_plugins = false -- GitLab