<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>312362</bug_id>
          
          <creation_ts>2026-04-15 01:39:45 -0700</creation_ts>
          <short_desc>[JSC] Build time increased after galloping merge landed</short_desc>
          <delta_ts>2026-04-30 02:12:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>313694</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Pena">spena</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jmichaud</cc>
    
    <cc>marcus_plutowski</cc>
    
    <cc>syg</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2200559</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Pena">spena</who>
    <bug_when>2026-04-15 01:39:45 -0700</bug_when>
    <thetext>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.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200665</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2026-04-15 08:42:24 -0700</bug_when>
    <thetext>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.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201447</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Pena">spena</who>
    <bug_when>2026-04-17 03:56:34 -0700</bug_when>
    <thetext>TL;DR: 975s GCC → 171s clang ≈ 5.7× speedup, ~13 min saved

With gcc,

awk &apos;NR&gt;1 {printf &quot;%8d ms  %s\n&quot;, $2-$1, $4}&apos; 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 &apos;NR&gt;1 {printf &quot;%8d ms  %s\n&quot;, $2-$1, $4}&apos; \                                                                                                                                                                                                                                   
  &gt; 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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2201496</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Pena">spena</who>
    <bug_when>2026-04-17 07:28:04 -0700</bug_when>
    <thetext>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 &apos;NR&gt;1 {printf &quot;%8d ms  %s\n&quot;, $2-$1, $4}&apos; 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 &apos;NR&gt;1 {printf &quot;%8d ms  %s\n&quot;, $2-$1, $4}&apos; 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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2203098</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-04-22 01:40:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/175322764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2206162</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2026-04-30 02:12:02 -0700</bug_when>
    <thetext>This issue was work-arounded here: https://commits.webkit.org/312349@main for GCC &lt;14 which is the one affected.
Closing

*** This bug has been marked as a duplicate of bug 313694 ***</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>