[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/30367] New: Performance regression after updating to 2.40
From: |
streetster at gmail dot com |
Subject: |
[Bug ld/30367] New: Performance regression after updating to 2.40 |
Date: |
Mon, 17 Apr 2023 21:12:12 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=30367
Bug ID: 30367
Summary: Performance regression after updating to 2.40
Product: binutils
Version: 2.40
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: streetster at gmail dot com
Target Milestone: ---
Created attachment 14835
--> https://sourceware.org/bugzilla/attachment.cgi?id=14835&action=edit
example linker file
We have found that the ld from binutils 2.40 is *significantly* slower to link
than binutils 2.39 for our use case (2+ orders of magnitude).
By bisecting the commits between 2.39 and 2.40 we identified that commit
b1eecf6f66a4a642f4cb35688213e6c1c1ffdc79 introduces the performance regression.
Our projects are N64 matching decompilations where we are linking a large
number of sections together. I have attached the .ld file used so you can see
an example of the input we are feeding to ld.
An example project can be found here: https://github.com/mkst/sssv - note that
you will need to provide your own N64 ROM.
Demonstrating the performance timings:
2.38 from Ubuntu 22.04 (same result when compiling binutils 2.38 source):
root@685e864fc2f7:/sssv# mips-linux-gnu-ld --version
GNU ld (GNU Binutils for Ubuntu) 2.38
Copyright (C) 2022 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
root@685e864fc2f7:/sssv# time mips-linux-gnu-ld -T sssv.ld -T
undefined_syms.us.txt -T undefined_syms_auto.txt -Map build/sssv.us.map
--no-check-sections -Lbuild/lib -lultra_rom -u osViGetCurrentLine -o
build/sssv.us.elf
real 0m0.279s
user 0m0.198s
sys 0m0.081s
2.40 from Ubuntu 23.04 (same result when compiling binutils 2.40 source OR
master OR commit b1eecf6f66a4a642f4cb35688213e6c1c1ffdc79):
root@9086fed5cc72:/sssv# mips-linux-gnu-ld --version
GNU ld (GNU Binutils for Ubuntu) 2.40
Copyright (C) 2023 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
root@9086fed5cc72:/sssv# time mips-linux-gnu-ld -T sssv.ld -T
undefined_syms.us.txt -T undefined_syms_auto.txt -Map build/sssv.us.map
--no-check-sections -Lbuild/lib -lultra_rom -u osViGetCurrentLine -o
build/sssv.us.elf
real 0m26.601s
user 0m26.516s
sys 0m0.080s
This is quite a significant performance regression, we have another example
where the time taken to link is over 5 minutes and is a blocker to using
binutils 2.40.
If there is a way to restructure our .ld file to avoid hitting this issue, we
would definitely be open to that.
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug ld/30367] New: Performance regression after updating to 2.40,
streetster at gmail dot com <=
- [Bug ld/30367] Performance regression after updating to 2.40, amodra at gmail dot com, 2023/04/18
- [Bug ld/30367] Performance regression after updating to 2.40, matz at suse dot de, 2023/04/18
- [Bug ld/30367] Performance regression after updating to 2.40, matz at suse dot de, 2023/04/18
- [Bug ld/30367] Performance regression after updating to 2.40, streetster at gmail dot com, 2023/04/18
- [Bug ld/30367] Performance regression after updating to 2.40, sam at gentoo dot org, 2023/04/19
- [Bug ld/30367] Performance regression after updating to 2.40, sam at gentoo dot org, 2023/04/19
- [Bug ld/30367] Performance regression after updating to 2.40, cvs-commit at gcc dot gnu.org, 2023/04/25
- [Bug ld/30367] Performance regression after updating to 2.40, matz at suse dot de, 2023/04/25