<p>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.</p>
<h2>Machines</h2>
<ul>
<li>"Linux Native"
<ul>
<li>Ubuntu 18.04</li>
<li>32GB RAM</li>
<li>6-core i7 @ 3.7GHz</li>
<li>Entirely on SSD</li>
</ul>
</li>
<li>"Windows with MSYS2"
<ul>
<li>Windows 10 Pro</li>
<li>32GB RAM</li>
<li>6-core i7 @ 3.7GHz</li>
<li>Geany source code on SSD, system headers and build tools on mechanical HDD.</li>
</ul>
</li>
<li>"Linux VM Guest on Windows Host"
<ul>
<li>ElementaryOS from 2018, in VirtualBox on Windows 10</li>
<li>4GB RAM</li>
<li>1-core emulated CPU (presumably 3.7GHz + VM overhead)</li>
<li>All files in virtual disk stored on a mechanical HDD.</li>
</ul>
</li>
</ul>
<h2>Tests</h2>
<ul>
<li>"configure"  - <code>./configure [opts]</code></li>
<li>"make" - <code>make -j12</code> after a <code>make clean</code></li>
<li>"imake" - <code>touch src/build.h && make -j12</code> to do an incremental build</li>
<li>"install" - <code>make -j12 install</code></li>
</ul>
<p>I used 12 <code>make</code> 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 <code>time</code> on the above commands and took the average of 3 runs for each. All 3 runs were quite similar in all cases.</p>
<h2>The results</h2>
<p><a target="_blank" rel="noopener noreferrer" href="https://user-images.githubusercontent.com/181177/64928352-e9a8d680-d7cb-11e9-804a-bf1647ce7a2f.png"><img src="https://user-images.githubusercontent.com/181177/64928352-e9a8d680-d7cb-11e9-804a-bf1647ce7a2f.png" alt="geanybuilds" style="max-width:100%;"></a></p>
<p>The Y axis is in seconds.</p>
<h2>Observations</h2>
<ul>
<li>As expected <code>configure</code> was really slow on Windows since it spawns tons of processes.</li>
<li>The Windows build seems to be spending a large portion of the time linking which is why even incremental build was still very slow.</li>
<li>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.</li>
<li>I don't know whether it's the <code>ld</code> linker which is slow, the <code>libtool</code> stuff, or some combination.</li>
</ul>
<h2>Possible Solutions?</h2>
<p>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 <code>libgeany</code> objects together in one go.</p>
<p>Maybe there's a way to get linking itself to be faster, needs investigation. Maybe a different build of <code>libtool</code> or something?</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/issues/2305?email_source=notifications&email_token=AAIOWJ3XQWAI64S5D2TAZ6LQJ2Z5HA5CNFSM4IW4GLQKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HLOWWUA">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAIOWJ6NALIEDEW45TDHTETQJ2Z5HANCNFSM4IW4GLQA">mute the thread</a>.<img src="https://github.com/notifications/beacon/AAIOWJ4LRPJOV7UMMY2JQQTQJ2Z5HA5CNFSM4IW4GLQKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HLOWWUA.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/geany/geany/issues/2305?email_source=notifications\u0026email_token=AAIOWJ3XQWAI64S5D2TAZ6LQJ2Z5HA5CNFSM4IW4GLQKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HLOWWUA",
"url": "https://github.com/geany/geany/issues/2305?email_source=notifications\u0026email_token=AAIOWJ3XQWAI64S5D2TAZ6LQJ2Z5HA5CNFSM4IW4GLQKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HLOWWUA",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>