Question

When I use MSYS to compile something, the ./configure step can take longer than the make. However, the same process in Linux has a fast configure and slow make. Is this just some setting in MSYS that is bogging down my system? Does anyone have a solution?

Was it helpful?

Solution

Typical configure scripts do a lot of starting small subprocesses. On Unix-like operating systems, this is done with the fork() and exec() function calls, which have very particular semantics that need to be preserved (for example, copy-on-write shared memory after forking). On Windows, subprocesses are created with CreateProcess() which has very different semantics (eg. completely separate memory space from the parent). In order to execute Unix-like scripts and programs correctly, MSYS needs to do a lot of emulation work to make creating new processes on Windows work like fork()/exec() on Unix. This ends up being slower than an OS that offers those function calls natively.

OTHER TIPS

You may also want to turn off any virus scanners you have running. They will re-scan an executable every time it is loaded, which absolutely kills script performance.

Even if you don't have anti-virus running, don't forget about Windows Defender. (You may also want to disable User Account Control, though I don't know what impact that has on program load time.)

A lot of disk access is involved, which IMHO slows things down a lot. For example configure creates temporary source code to be compiled as part of the tests it performs. This creates an object file that has to be deleted again. What I do to speed up configure is extract the source I want to build on a RAM drive and configure and compile it there. I recommend using ImDisk (http://www.ltr-data.se/opencode.html/#ImDisk) which is free.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top