This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello. Is this list an appropriate place to ask questions about the performance of binutils? We produce a largish C++ application using free tools, cross-compiling for linux and windows from linux. By large, I mean 83 megabytes with some debugging enabled, 33 megabytes stripped. It consists of around 6000 source files plus a number of third party libraries (tk, python, boost, etc). I'm using these tool versions: gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5) GNU ld version 2.16.91 20050608 i386-mingw32msvc-gcc (GCC) 3.2.2 (mingw special 20030208-1) GNU ld version 2.16.91 20050608 I'm passing --hash-size=120000 to the linker commandline by using -Wl,--hash-size=120000---this made a big different to the link time on Linux. The 6000 objects are all listed in a linker script, not "ar"d into a library. Anyway, the problem is that the time to link mingw is much, much longer than it is to link linux. In both cases, I'm referring to a link with all objects on a local system, "hot cache", and enough RAM to avoid swapping. The Linux binary takes under 1 CPU minute to link, while the Windows binary can take around 8 CPU minutes to link. I notice that the RAM usage for the link of the .EXE is much lower (less than 200 megs instead of nearly 1 gigabyte) These are all the items above 1% of the link time when I build the linker with profiling: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls s/call s/call name 37.25 78.49 78.49 651231576 0.00 0.00 compare_section 31.02 143.86 65.37 346588 0.00 0.00 coff_section_from_bfd_index 10.49 165.97 22.11 104704 0.00 0.00 wild_sort 4.04 174.49 8.52 608190154 0.00 0.00 _bfd_pei_swap_sym_in 3.98 182.88 8.39 104704 0.00 0.00 output_section_callback 2.88 188.94 6.06 1220538500 0.00 0.00 bfd_getl32 2.20 193.58 4.64 1218124193 0.00 0.00 bfd_getl16 2.12 198.04 4.46 66684 0.00 0.00 handle_COMDAT 1.87 201.99 3.95 7188 0.00 0.00 ldlang_add_file 1.24 204.61 2.62 2384623 0.00 0.00 bfd_hash_lookup Does anyone have some advice on where I might look to speed this up? The time to run the linker is becoming a major slowdown for developers, because all developer builds are done sequentially on a single fast server + distcc. Thanks in advance for any advice you can give me. If there's more information I could provide, please ask. Jeff Epler jepler@unpythonic.net
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |