I know this isn't a Geany issue directly, but maybe there's something that can
be done to improve the build times. I ran some tests to measure the actual
build times.
## Machines
* "Linux Native"
* Ubuntu 18.04
* 32GB RAM
* 6-core i7 @ 3.7GHz
* Entirely on SSD
* "Windows with MSYS2"
* Windows 10 Pro
* 32GB RAM
* 6-core i7 @ 3.7GHz
* Geany source code on SSD, system headers and build tools on mechanical
HDD.
* "Linux VM Guest on Windows Host"
* ElementaryOS from 2018, in VirtualBox on Windows 10
* 4GB RAM
* 1-core emulated CPU (presumably 3.7GHz + VM overhead)
* All files in virtual disk stored on a mechanical HDD.
## Tests
* "configure" - `./configure [opts]`
* "make" - `make -j12` after a `make clean`
* "imake" - `touch src/build.h && make -j12` to do an incremental build
* "install" - `make -j12 install`
I used 12 `make` jobs on account of the 12 hyperthreads in the CPU, even in the
VM which makes no sense since I only assigned it a single core. I used `time`
on the above commands and took the average of 3 runs for each. All 3 runs were
quite similar in all cases.
## The results

The Y axis is in seconds.
## Observations
* As expected `configure` was really slow on Windows since it spawns tons of
processes.
* The Windows build seems to be spending a large portion of the time linking
which is why even incremental build was still very slow.
* In the wimpy Linux VM with 1 core, the vast majority of the compile time
was spent compiling Scintilla's C++ code, shown by how the incremental build
that didn't touch C++ code is comparatively fast.
* I don't know whether it's the `ld` linker which is slow, the `libtool`
stuff, or some combination.
## Possible Solutions?
The linking times even in the Libtool helper libraries is really slow, so maybe
for Windows we could not use helper libraries and link all of the `libgeany`
objects together in one go.
Maybe there's a way to get linking itself to be faster, needs investigation.
Maybe a different build of `libtool` or something?
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/issues/2305