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
(Use C:\deno instead of c:\deno in appveyor config because it's cloned to c:\ by clone_folder variable in .appveyor.yml. On the other hand, build directory is pointed to C:\ by $(APPVEYOR_BUILD_FOLDER) so that test targets are placed on separated partitions.)
This will improve the threshold benchmark. Using 32k because that's what
Go uses, but we should explore the value in the future.
a0d6420d8b/src/io/io.go (L391)