Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Winlibs is two times slower than MSYS2 #152

Open
RoyalXXX opened this issue May 23, 2023 · 24 comments
Open

Winlibs is two times slower than MSYS2 #152

RoyalXXX opened this issue May 23, 2023 · 24 comments

Comments

@RoyalXXX
Copy link

I am using the VS code editor with C++ extension.
I have tested the following g++ compilers:

  1. g++ from GCC + MinGW-w64 (UCRT version) downloaded from winlibs
  2. g++ from UCRT64 downloaded from MSYS2 (package mingw-w64-ucrt-x86_64-gcc)
    i compiled the same code, the winlibs version compiled almost twice as slow
    Why such difference?
@brechtsanders
Copy link
Owner

I have the impression it's slower too.

I will try to make a build without the following linker flags to see if it makes a difference:
-Wl,--dynamicbase -Wl,--high-entropy-va -Wl,--nxcompat -Wl,--tsaware

@brechtsanders
Copy link
Owner

Just a question: what exactly is slow?

  • Compiling a single source (C and/or C++)?
  • Linking?
  • Invoking many commands to compile and link?

@RoyalXXX
Copy link
Author

RoyalXXX commented May 23, 2023 via email

@brechtsanders
Copy link
Owner

I also feel it's mostly g++ being slow.
In the past there were issues with precompiled headers, maybe that's related.

The build without the flags mentioned earlier is ready (only MSVCRT build for now):
https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-11.0.0-msvcrt-r2

Can you try if that makes any difference in speed for you?

@RoyalXXX
Copy link
Author

RoyalXXX commented May 25, 2023 via email

@brechtsanders
Copy link
Owner

I'm stress testing this latest release now and as.exe works find.

Your error may indicate there is something in PATH that makes it load dependencies from the wrong place.

That may even be the cause of your issues.

When building with winlibs can you try to add mingw64/bin from within the folder where you extracted winlibs are added at the beginning of PATH?

@zeitbit
Copy link

zeitbit commented May 26, 2023

Hi,

There is a problem with this release, there are several void EXEs (all bytes are 0):

mingw\bin\windmc.exe
mingw\bin\windres.exe

And all the files in mingw64\x86_64-w64-mingw32\bin.

winlibs-x86_64-mcf-seh-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r2.7z

I'm stress testing this latest release now and as.exe works find.

Your error may indicate there is something in PATH that makes it load dependencies from the wrong place.

That may even be the cause of your issues.

When building with winlibs can you try to add mingw64/bin from within the folder where you extracted winlibs are added at the beginning of PATH?

@brechtsanders
Copy link
Owner

You are right, there is an issue with the 64-bit toolchain in release https://github.com/brechtsanders/winlibs_mingw/releases/13.1.0-11.0.0-msvcrt-r2/

Quite possibly my antivirus ate some files, but I need to investigate.

@brechtsanders
Copy link
Owner

brechtsanders commented May 26, 2023

Since the slowness is with g++ in particular I will try to build with --disable-libstdcxx-backtrace instead of --enable-libstdcxx-backtrace.

libbacktrace hasn't released an actual release version, so using it may have been a bad idea.

@brechtsanders
Copy link
Owner

@RoyalXXX
Copy link
Author

RoyalXXX commented May 30, 2023 via email

@luisdallos
Copy link

I confirm that the error is gone, but compilation is still slow.
30 sec : winlibs gcc-13.1.0-mingw-w64msvcrt-11.0.0-r3
30 sec : winlibs gcc-13.1.0-mingw-w64ucrt-11.0.0-r3
10 sec : msys2 mingw-w64-ucrt-x86_64-gcc

@brechtsanders

¿Are GCC and Binutils binaries from winlibs being built without optimization flags at all?

According to https://github.com/msys2/MSYS2-packages/blob/master/pacman/makepkg_mingw.conf#L32, mingw packages from msys2 are built with some optimization flags passed to both CFLAGS and CXXFLAGS:

-march=nocona -msahf -mtune=generic -O2 (MINGW64 case)
-march=pentium4 -mtune=generic -O2 (MINGW32 case)

@brechtsanders
Copy link
Owner

brechtsanders commented May 31, 2023

@luisdallos
Copy link

luisdallos commented Jun 1, 2023

Can you try one of the following builds which I made with those optimization flags?

* https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-11.0.0-ucrt-r4b

* https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-11.0.0-msvcrt-r4b

I have done some compile time tests with both 32-bit and 64-bit builds of 13.1.0-11.0.0-msvcrt-r4b release and 13.1.0posix-16.0.3-11.0.0-msvcrt-r1 release. Here are the results:

winlibs-x86_64-posix-seh-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r1
F:\msys64\usr\bin\time.exe -p g++ -c -oproject.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  project.cpp
real 13.65
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omain.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  main.cpp
real 3.51
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators\makefile.cpp
real 30.23
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators\unix\unixmake.cpp
real 16.36
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake2.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators\unix\unixmake2.cpp
real 40.63
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -oborland_bmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/borland_bmake.cpp
real 16.77
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omingw_make.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/mingw_make.cpp
real 21.47
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_nmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/msvc_nmake.cpp
real 19.89
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_dsp.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/msvc_dsp.cpp
real 24.98
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_vcproj.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/msvc_vcproj.cpp
real 17.13
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -ooption.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  option.cpp
real 6.18
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -owinmakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/winmakefile.cpp
real 10.46
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -oprojectgenerator.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/projectgenerator.cpp
real 10.70
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -ometrowerks_xml.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/mac/metrowerks_xml.cpp
real 15.01
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -opbuilder_pbx.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/mac/pbuilder_pbx.cpp
real 24.28
user 0.01
sys 0.00
winlibs-x86_64-posix-seh-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r4b
F:\msys64\usr\bin\time.exe -p g++ -c -oproject.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  project.cpp
real 4.26
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omain.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  main.cpp
real 1.14
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators\makefile.cpp
real 9.63
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators\unix\unixmake.cpp
real 5.44
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake2.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators\unix\unixmake2.cpp
real 14.54
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -oborland_bmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/borland_bmake.cpp
real 5.62
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omingw_make.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/mingw_make.cpp
real 7.12
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_nmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/msvc_nmake.cpp
real 6.78
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_dsp.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/msvc_dsp.cpp
real 8.83
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_vcproj.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/msvc_vcproj.cpp
real 5.26
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -ooption.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  option.cpp
real 1.73
user 0.01
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -owinmakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/winmakefile.cpp
real 2.84
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -oprojectgenerator.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/projectgenerator.cpp
real 3.29
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -ometrowerks_xml.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/mac/metrowerks_xml.cpp
real 4.83
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -opbuilder_pbx.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/mac/pbuilder_pbx.cpp
real 8.75
user 0.00
sys 0.01
winlibs-i686-posix-dwarf-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r1
F:\msys64\usr\bin\time.exe -p g++ -c -oproject.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  project.cpp
real 13.43
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omain.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  main.cpp
real 3.44
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators\makefile.cpp
real 29.94
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators\unix\unixmake.cpp
real 16.16
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake2.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators\unix\unixmake2.cpp
real 39.61
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -oborland_bmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/borland_bmake.cpp
real 15.60
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omingw_make.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/mingw_make.cpp
real 19.17
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_nmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/msvc_nmake.cpp
real 18.47
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_dsp.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/msvc_dsp.cpp
real 24.50
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_vcproj.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/msvc_vcproj.cpp
real 16.49
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -ooption.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  option.cpp
real 5.23
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -owinmakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/winmakefile.cpp
real 9.02
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -oprojectgenerator.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/projectgenerator.cpp
real 9.81
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -ometrowerks_xml.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/mac/metrowerks_xml.cpp
real 14.65
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -opbuilder_pbx.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/mac/pbuilder_pbx.cpp
real 23.43
user 0.00
sys 0.01
winlibs-i686-posix-dwarf-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r4b
F:\msys64\usr\bin\time.exe -p g++ -c -oproject.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  project.cpp
real 4.13
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omain.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  main.cpp
real 1.15
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators\makefile.cpp
real 9.26
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators\unix\unixmake.cpp
real 5.17
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake2.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators\unix\unixmake2.cpp
real 13.00
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -oborland_bmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/borland_bmake.cpp
real 5.07
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omingw_make.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/mingw_make.cpp
real 6.24
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_nmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/msvc_nmake.cpp
real 6.04
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_dsp.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/msvc_dsp.cpp
real 8.10
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_vcproj.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/msvc_vcproj.cpp
real 5.21
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -ooption.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  option.cpp
real 1.70
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -owinmakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/win32/winmakefile.cpp
real 2.74
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -oprojectgenerator.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/projectgenerator.cpp
real 3.05
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -ometrowerks_xml.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/mac/metrowerks_xml.cpp
real 4.53
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -opbuilder_pbx.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse  generators/mac/pbuilder_pbx.cpp
real 7.90
user 0.00
sys 0.00

In both 32-bit and 64-bit tests, compilation times are ~3x faster when using the optimized GCC binaries.

According to the release notes, only GCC was built with optimization flags. I would expect some additional speed gains once Binutils gets built with optimization flags as both assembler (as) and linker (ld) come from Binutils.

As a side note, you should use for any future builds the linker flag -Wl,--no-insert-timestamp in order to make binaries more deterministic. I tell that as Binutils binaries from both 13.1.0-11.0.0-msvcrt-r4b and 13.1.0posix-16.0.3-11.0.0-msvcrt-r1 releases have the same file size, differing only in their PE timestamp.

@brechtsanders
Copy link
Owner

What exactly is the benefit of the -Wl,--no-insert-timestamp flag?

Are your measured speeds better/same/worse than MSYS2's gcc?

@luisdallos
Copy link

What exactly is the benefit of the -Wl,--no-insert-timestamp flag?

The -Wl,--no-insert-timestamp linker flag is useful to get reproducible builds on Windows.

Useful to avoid situations such as the Binutils binaries from both 13.1.0-11.0.0-msvcrt-r4b and 13.1.0posix-16.0.3-11.0.0-msvcrt-r1 releases differing only in their PE file header date/time stamp.

Are your measured speeds better/same/worse than MSYS2's gcc?

Here is the compile time test done with the 64-bit msvcrt version of MSYS2's gcc (GCC 13.1.0 - Binutils 2.40 - Mingw-w64 11.0.0)

mingw-w64-x86_64-gcc
F:\msys64\usr\bin\time.exe -p g++ -c -oproject.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  project.cpp
real 4.47
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omain.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  main.cpp
real 1.21
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators\makefile.cpp
real 9.94
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators\unix\unixmake.cpp
real 5.60
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake2.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators\unix\unixmake2.cpp
real 15.09
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -oborland_bmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/borland_bmake.cpp
real 5.64
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omingw_make.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/mingw_make.cpp
real 7.23
user 0.00
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_nmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/msvc_nmake.cpp
real 7.00
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_dsp.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/msvc_dsp.cpp
real 9.23
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_vcproj.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/msvc_vcproj.cpp
real 5.31
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -ooption.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  option.cpp
real 1.83
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -owinmakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/win32/winmakefile.cpp
real 2.95
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -oprojectgenerator.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/projectgenerator.cpp
real 3.37
user 0.01
sys 0.00
F:\msys64\usr\bin\time.exe -p g++ -c -ometrowerks_xml.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/mac/metrowerks_xml.cpp
real 4.94
user 0.00
sys 0.01
F:\msys64\usr\bin\time.exe -p g++ -c -opbuilder_pbx.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow  generators/mac/pbuilder_pbx.cpp
real 9.01
user 0.00
sys 0.01

Looks like that MSYS2's GCC compile speed is similar to WinLibs' optimized GCC build (13.1.0-11.0.0-msvcrt-r4b release), at least for the 64-bit msvcrt case (winlibs-x86_64-posix-seh-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r4b)

@brechtsanders
Copy link
Owner

Okay, the latest builds (my computer has been busy tonight) include linker flag -Wl,--no-insert-timestamp both when building GCC and binutils:

Does it do what you expect it to do now?

@luisdallos
Copy link

Okay, the latest builds (my computer has been busy tonight) include linker flag -Wl,--no-insert-timestamp both when building GCC and binutils:

* https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-16.0.5-11.0.0-msvcrt-r5

* https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-16.0.5-11.0.0-ucrt-r5

Does it do what you expect it to do now?

I have tested both 32-bit and 64-bit msvcrt builds but gcc and binutils binaries still come with their PE file header date/time stamp set to non-zero (as shown in the Time/Date field from objdump.exe -p gcc.exe output) despite gcc -v output showing -Wl,--no-insert-timestamp linker flag being passed to LDFLAGS.

The weird thing is that all other linker flags passed to LDFLAGS are being applied as expected (see the DllCharacteristics field from objdump.exe -p gcc.exe output).

  • gcc.exe -v output:
Reading specs from F:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/specs
COLLECT_GCC=F:\msys64\mingw64\bin\gcc.exe
COLLECT_LTO_WRAPPER=F:/msys64/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/13.1.0/lto-wrapper.exe
OFFLOAD_TARGET_NAMES=nvptx-none
Target: x86_64-w64-mingw32
Configured with: ../configure --prefix=/R/winlibs64_stage/inst_gcc-13.1.0/share/gcc --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --enable-offload-targets=nvptx-none --with-pkgversion='MinGW-W64 x86_64-msvcrt-posix-seh, built by Brecht Sanders' --with-tune=generic --enable-checking=release --enable-threads=posix --disable-sjlj-exceptions --disable-libunwind-exceptions --disable-serial-configure --disable-bootstrap --enable-host-shared --enable-plugin --disable-default-ssp --disable-rpath --disable-libstdcxx-debug --disable-version-specific-runtime-libs --with-stabs --disable-symvers --enable-languages=c,c++,fortran,lto,objc,obj-c++ --disable-gold --disable-nls --disable-stage1-checking --disable-win32-registry --disable-multilib --enable-ld --enable-libquadmath --enable-libada --enable-libssp --enable-libstdcxx --enable-lto --enable-fully-dynamic-string --enable-libgomp --enable-graphite --enable-mingw-wildcard --enable-libstdcxx-time --enable-libstdcxx-pch --with-mpc=/d/Prog/winlibs64_stage/custombuilt --with-mpfr=/d/Prog/winlibs64_stage/custombuilt --with-gmp=/d/Prog/winlibs64_stage/custombuilt --with-isl=/d/Prog/winlibs64_stage/custombuilt --disable-libstdcxx-backtrace --enable-install-libiberty --enable-__cxa_atexit --without-included-gettext --with-diagnostics-color=auto --enable-clocale=generic --with-libiconv --with-system-zlib --with-build-sysroot=/R/winlibs64_stage/gcc-13.1.0/build_mingw/mingw-w64 CFLAGS='-I/d/Prog/winlibs64_stage/custombuilt/include/libdl-win32 -Wno-int-conversion  -march=nocona -msahf -mtune=generic -O2' CXXFLAGS='-Wno-int-conversion  -march=nocona -msahf -mtune=generic -O2' LDFLAGS='-pthread -Wl,--no-insert-timestamp -Wl,--dynamicbase -Wl,--high-entropy-va -Wl,--nxcompat -Wl,--tsaware'
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.1.0 (MinGW-W64 x86_64-msvcrt-posix-seh, built by Brecht Sanders)

--

  • objdump.exe -p gcc.exe output:
F:/msys64/mingw64/bin/gcc.exe:     file format pei-x86-64

Characteristics 0x22e
        executable
        line numbers stripped
        symbols stripped
        large address aware
        debugging information removed

Time/Date               Sat Jun 03 15:41:14 2023
Magic                   020b    (PE32+)
MajorLinkerVersion      2
MinorLinkerVersion      40
SizeOfCode              00000000000b6e00
SizeOfInitializedData   000000000019e400
SizeOfUninitializedData 0000000000004a00
AddressOfEntryPoint     00000000000013f0
BaseOfCode              0000000000001000
ImageBase               0000000140000000
SectionAlignment        00001000
FileAlignment           00000200
MajorOSystemVersion     4
MinorOSystemVersion     0
MajorImageVersion       0
MinorImageVersion       0
MajorSubsystemVersion   5
MinorSubsystemVersion   2
Win32Version            00000000
SizeOfImage             001aa000
SizeOfHeaders           00000400
CheckSum                001aa0d3
Subsystem               00000003        (Windows CUI)
DllCharacteristics      00008160
                                        HIGH_ENTROPY_VA
                                        DYNAMIC_BASE
                                        NX_COMPAT
                                        TERMINAL_SERVICE_AWARE
SizeOfStackReserve      0000000000c00000
SizeOfStackCommit       0000000000001000
SizeOfHeapReserve       0000000000100000
SizeOfHeapCommit        0000000000001000
LoaderFlags             00000000
NumberOfRvaAndSizes     00000010

--

@luisdallos
Copy link

About the compilation speed issue, I have done some more tests by compiling ccache 4.7.4 (2 make jobs, no redis support, tests disabled). Compilation speeds are practically the same in both WinLibs' 64-bit 13.1.0-16.0.5-11.0.0-msvcrt-r5 and Msys2's mingw-w64-x86_64-gcc cases (~190 seconds), way faster in comparision with the unoptimized gcc/binutils binaries (WinLibs' 64-bit 13.1.0posix-16.0.3-11.0.0-msvcrt-r1 case) where the same compilation takes ~480 seconds.

@brechtsanders
Copy link
Owner

About -Wl,--no-insert-timestamp, if it doesn't work than maybe that's a GCC bug?

About ccache: what's the difference with ccache 4.8.1 that I included?
I did build it with hiredis support. Should I remove that?

@luisdallos
Copy link

About -Wl,--no-insert-timestamp, if it doesn't work than maybe that's a GCC bug?

I tested GCC by building xz-utils (which - like GCC and Binutils - uses autoconf as its buildsystem) with the compiler and linker flags shown at gcc -v output being passed to the configure script. Both the shared library (liblzma-5.dll) and the xz.exe utility were generated with their PE file header date/time stamp set to zero as expected.

Looks like that this bug lies in GCC/Binutils buildsystem as it is way more complex (e.g. the main configure script launches secondary configure scripts and so on) than the one present in xz-utils which has only one configure script. Either GCC or Binutils build logs can help here.

About ccache: what's the difference with ccache 4.8.1 that I included? I did build it with hiredis support. Should I remove that?

There is no need to remove hiredis support. I opted to omit hiredis (as it is an optional dependency unlike libzstd) as well as the testing stuff from the compilation speed test in order to maintain the number of files to compile as low as possible.

@brechtsanders
Copy link
Owner

I'm not convinced the CFLAGS/CXXFLAGS/LDFLAGS from building gcc are intended to specify it's default build flags.

What would be a good way to tell gcc to always use specific compiler and/or linker flags, independent of build system?

Could .spec files be the answer? Or is there another way?

@zeitbit
Copy link

zeitbit commented Jun 7, 2023

I'd set/export CFLAGS/CXXFLAGS/LDFLAGS as environment variables.

Or, if you're using CMake, I'd try setting "set(CMAKE_C_FLAGS_RELEASE "...")", etc, after the project command in "CMakeLists.txt".

I'm not convinced the CFLAGS/CXXFLAGS/LDFLAGS from building gcc are intended to specify it's default build flags.

What would be a good way to tell gcc to always use specific compiler and/or linker flags, independent of build system?

Could .spec files be the answer? Or is there another way?

@brechtsanders
Copy link
Owner

I build thousands of projects from source, that would be a lot of work.

What I really want to know if we can tell gcc to use certain flags by default, so they don't need to be specified every time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants