I noticed it for a long time, but now I'd like to do something about it:
When compiling a project in C::B under Linux, the compilation is much slower(in my example project ~15 s) as when using a makefile to do the same steps (~2.5 s).
This problem doesn't exist on Windows, there C::B is equally fast.
I could make it faster by increasing the process count to the amount of source files in Settings->Compiler&Debugger->Other, but it's still not as fast (~ 4 s) because the linking step has to wait until the compiler steps are finished.
I could reduce the problem to the PipedProcess class by testing the behaviour of this class when executing a program. More precisely I could reduce it to the wxExecute call. When I change the wxExecute call to work synchronously, it's as fast as make, but in asynchronous mode, it takes some time until OnTerminate of the PipedProcess is called. (Some values: Compiling a simple hello world C program using "gcc -c test.c" takes 70 ms when doing it synchronously, but 1.4 s asynchronously)
I also made another test: I manually forked the process and called exec, while returning the process id in the parent process, so that it does the same as wxExecute can do. Then I used waitpid frequently (every 10 ms) to check if the process is finished. If I use my simple "version" of wxExecute, it's ~70 ms, but when I create the process with wxExecute, it's slow.
So I ask: Is there a known workaround to this problem or has anyone else any knowledge that could help? Is this a bug in wxWidgets?