RESOLVED DUPLICATE of bug 313694312362
[JSC] Build time increased after galloping merge landed
https://bugs.webkit.org/show_bug.cgi?id=312362
Summary [JSC] Build time increased after galloping merge landed
Simon Pena
Reported 2026-04-15 01:39:45 PDT
After https://bugs.webkit.org/show_bug.cgi?id=310948, build times have increased: Building with gcc 13.3.0-6ubuntu2~24.04.1 in release mode, spent 15+ minutes on the unified file that has the type array template expansions. As the galloping merge provided a measurable performance boost, any changes addressing this should not cause any performance regression, and should be perf-tested. We also need to measure how long the type array template expansions file took to build before landing this -- so we can quantify the exact impact.
Attachments
Darin Adler
Comment 1 2026-04-15 08:42:24 PDT
Since there are only a few code paths that use this sort, I am guessing there’s a way to keep the performance benefits of this much better sort, without creating a single unified source file that happens to take so long to compile.
Simon Pena
Comment 2 2026-04-17 03:56:34 PDT
TL;DR: 975s GCC → 171s clang ≈ 5.7× speedup, ~13 min saved With gcc, awk 'NR>1 {printf "%8d ms %s\n", $2-$1, $4}' WebKitBuild/WPE/Release/.ninja_log | sort -rn | head -20 975560 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-30.cpp.o 961520 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-30.cpp.o 398689 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-3a52ce78-41.cpp.o 393547 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-3a52ce78-41.cpp.o 177045 ms Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/GeneratedSerializers.cpp.o 175074 ms Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/GeneratedSerializers.cpp.o 170132 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-3a52ce78-199.cpp.o 162719 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-3a52ce78-199.cpp.o 152361 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-7.cpp.o 144570 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-7.cpp.o 136922 ms Source/WebCore/CMakeFiles/WebCoreTestSupport.dir/testing/Internals.cpp.o 134738 ms Source/WebCore/CMakeFiles/WebCoreTestSupport.dir/testing/Internals.cpp.o 128649 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-84c9f43f-6.cpp.o 125753 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-6.cpp.o 125724 ms Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/unified-sources/UnifiedSource-88d1702b-10.cpp.o 124162 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-84c9f43f-6.cpp.o 123556 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp.o 122372 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-23a5fd0e-6.cpp.o 121921 ms Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/unified-sources/UnifiedSource-88d1702b-10.cpp.o 120371 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-3a3c4ec0-5.cpp.o With clang 11:48 $ awk 'NR>1 {printf "%8d ms %s\n", $2-$1, $4}' \ > WebKitBuild-Clang/.ninja_log | sort -rn | head -20 224610 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-3a52ce78-41.cpp.o 203361 ms Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/GeneratedSerializers.cpp.o 176576 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-3a52ce78-199.cpp.o 172579 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-7.cpp.o 171003 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-30.cpp.o 145389 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-84c9f43f-6.cpp.o 144482 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-6.cpp.o 142641 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-043dd90b-8.cpp.o 136630 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-9.cpp.o 136394 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-950a39b6-10.cpp.o 136260 ms Source/WebCore/CMakeFiles/WebCoreTestSupport.dir/testing/Internals.cpp.o 135037 ms Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/unified-sources/UnifiedSource-88d1702b-10.cpp.o 127530 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-9.cpp.o 122789 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-043dd90b-11.cpp.o 120558 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-4.cpp.o 117650 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-f34946be-3.cpp.o 116528 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-2f84417a-21.cpp.o 115895 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-26ec8d00-6.cpp.o 113722 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-26ec8d00-7.cpp.o 111608 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-3.cpp.o
Simon Pena
Comment 3 2026-04-17 07:28:04 PDT
Going to the commit prior to (re)landing the galloping merge, TL;DR: 165s GCC → 111s clang ≈ 1.5× speedup Summarising, clang has climbed from 111s to 171s (1.54× slower), gcc has gone from 165s to 975s (5.91× slower) with Clang 18.1.3 14:54 $ awk 'NR>1 {printf "%8d ms %s\n", $2-$1, $4}' WebKitBuild-Clang/.ninja_log | sort -rn | head -20 215143 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-3a52ce78-41.cpp.o 193978 ms Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/GeneratedSerializers.cpp.o 159743 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-3a52ce78-199.cpp.o 159735 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-7.cpp.o 132725 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-6.cpp.o 130608 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-043dd90b-8.cpp.o 129356 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-950a39b6-10.cpp.o 127712 ms Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/unified-sources/UnifiedSource-88d1702b-10.cpp.o 127082 ms Source/WebCore/CMakeFiles/WebCoreTestSupport.dir/testing/Internals.cpp.o 126351 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-84c9f43f-6.cpp.o 125837 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-9.cpp.o 118674 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-9.cpp.o 117603 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-043dd90b-11.cpp.o 111494 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-30.cpp.o 109885 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-4.cpp.o 109789 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-2f84417a-20.cpp.o 107056 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-26ec8d00-6.cpp.o 106884 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-84c9f43f-5.cpp.o 106800 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-26ec8d00-7.cpp.o 104988 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-950a39b6-9.cpp.o and with gcc 13.3.0: 15:22 $ awk 'NR>1 {printf "%8d ms %s\n", $2-$1, $4}' WebKitBuild/WPE/Release/.ninja_log | sort -rn | head -20 415628 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-3a52ce78-41.cpp.o 170013 ms Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/GeneratedSerializers.cpp.o 165180 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-30.cpp.o 162374 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-3a52ce78-199.cpp.o 153831 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-7.cpp.o 136139 ms Source/WebCore/CMakeFiles/WebCoreTestSupport.dir/testing/Internals.cpp.o 120630 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-23a5fd0e-6.cpp.o 120231 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-6.cpp.o 119492 ms Source/WebKit/CMakeFiles/WebKit.dir/__/__/DerivedSources/WebKit/unified-sources/UnifiedSource-88d1702b-10.cpp.o 118008 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-84c9f43f-6.cpp.o 117773 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-12.cpp.o 116414 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-767013ce-9.cpp.o 116277 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/ftl/FTLLowerDFGToB3.cpp.o 115364 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-3a3c4ec0-5.cpp.o 113642 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-043dd90b-8.cpp.o 111373 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-be65d27a-9.cpp.o 109278 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/dfg/DFGSpeculativeJIT.cpp.o 106852 ms Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/__/__/JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-bfc896e1-3.cpp.o 102823 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-950a39b6-10.cpp.o 102699 ms Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-043dd90b-11.cpp.o
Radar WebKit Bug Importer
Comment 4 2026-04-22 01:40:12 PDT
Carlos Alberto Lopez Perez
Comment 5 2026-04-30 02:12:02 PDT
This issue was work-arounded here: https://commits.webkit.org/312349@main for GCC <14 which is the one affected. Closing *** This bug has been marked as a duplicate of bug 313694 ***
Note You need to log in before you can comment on or make changes to this bug.