Skip to content

Expensive Headers

Jer Noble edited this page Mar 6, 2023 · 6 revisions

This page contains a list of the most "expensive" headers (in terms of CPU time spent compiling said headers) in various projects within WebKit. This data was generated by clang -ftime and collated for analysis by ClangBuildAnalyzer, per the instructions at Analyzing Build Performance.

Current data is as of 261253@main.

Top 20 Most Expensive JavaScriptCore Headers:

142682 ms: Source/JavaScriptCore/bytecode/CodeBlock.h (included 174 times, avg 820 ms)
55021 ms: Source/JavaScriptCore/runtime/JSCJSValueInlines.h (included 118 times, avg 466 ms)
52675 ms: Source/JavaScriptCore/assembler/MacroAssembler.h (included 185 times, avg 284 ms)
50942 ms: WebKitBuild/Debug/DerivedSources/JavaScriptCore/BytecodeStructs.h (included 51 times, avg 998 ms)
46876 ms: Source/JavaScriptCore/jit/GPRInfo.h (included 178 times, avg 263 ms)
45609 ms: Source/JavaScriptCore/runtime/JSCellInlines.h (included 137 times, avg 332 ms)
45407 ms: Source/JavaScriptCore/jit/CCallHelpers.h (included 162 times, avg 280 ms)
35290 ms: runtime/JSCJSValueInlines.h (included 42 times, avg 840 ms)
34958 ms: dfg/DFGGraph.h (included 17 times, avg 2056 ms)
34776 ms: Source/JavaScriptCore/runtime/Options.h (included 182 times, avg 191 ms)
34295 ms: Source/JavaScriptCore/bytecode/ArrayProfile.h (included 169 times, avg 202 ms)
33637 ms: Source/JavaScriptCore/runtime/JSGlobalObject.h (included 148 times, avg 227 ms)
30936 ms: Source/JavaScriptCore/runtime/JSCInlines.h (included 71 times, avg 435 ms)
30510 ms: runtime/JSCellInlines.h (included 43 times, avg 709 ms)
28497 ms: Source/JavaScriptCore/wasm/WasmFormat.h (included 60 times, avg 474 ms)
26215 ms: Source/JavaScriptCore/wasm/WasmCallingConvention.h (included 39 times, avg 672 ms)
23353 ms: Source/JavaScriptCore/b3/testb3.h (included 8 times, avg 2919 ms)
23205 ms: Source/JavaScriptCore/dfg/DFGGraph.h (included 11 times, avg 2109 ms)
22176 ms: runtime/JSCInlines.h (included 43 times, avg 515 ms)
20915 ms: Source/JavaScriptCore/runtime/JSCast.h (included 142 times, avg 147 ms)

Top 20 Most Expensive WebCore Headers:

210135 ms: Source/WebCore/rendering/style/RenderStyle.h (included 311 times, avg 675 ms)
203036 ms: WebKitBuild/Debug/JavaScriptCore.framework/PrivateHeaders/JSCJSValueInlines.h (included 255 times, avg 796 ms)
179436 ms: WebKitBuild/Debug/JavaScriptCore.framework/PrivateHeaders/JSCellInlines.h (included 256 times, avg 700 ms)
156563 ms: Source/WebCore/dom/Document.h (included 371 times, avg 422 ms)
140100 ms: Source/WebCore/rendering/RenderObject.h (included 206 times, avg 680 ms)
124655 ms: WebKitBuild/Debug/JavaScriptCore.framework/PrivateHeaders/JSGlobalObject.h (included 262 times, avg 475 ms)
120470 ms: Source/WebCore/bindings/js/JSDOMGlobalObject.h (included 244 times, avg 493 ms)
117044 ms: Source/WebCore/rendering/RenderElement.h (included 201 times, avg 582 ms)
103448 ms: Source/WebCore/platform/graphics/GraphicsLayer.h (included 203 times, avg 509 ms)
100215 ms: Source/WebCore/bindings/js/JSDOMConvert.h (included 119 times, avg 842 ms)
98561 ms: Source/WebCore/bindings/js/JSDOMPromiseDeferred.h (included 110 times, avg 896 ms)
92531 ms: Source/WebCore/platform/graphics/FontCascade.h (included 263 times, avg 351 ms)
90914 ms: Source/WebCore/platform/graphics/GraphicsContext.h (included 212 times, avg 428 ms)
85441 ms: Source/WebCore/bindings/js/JSDOMBinding.h (included 93 times, avg 918 ms)
84476 ms: Source/WebCore/page/ChromeClient.h (included 63 times, avg 1340 ms)
77871 ms: Source/WebCore/bindings/js/DOMWrapperWorld.h (included 230 times, avg 338 ms)
75401 ms: Source/WebCore/rendering/RenderBoxModelObject.h (included 181 times, avg 416 ms)
74941 ms: Source/WebCore/platform/animation/AcceleratedEffectStack.h (included 204 times, avg 367 ms)
74016 ms: Source/WebCore/page/Page.h (included 287 times, avg 257 ms)
72334 ms: Source/WebCore/page/DOMWindow.h (included 161 times, avg 449 ms)

Top 20 Most Expensive WebKit Headers:

307084 ms: Source/WebKit/UIProcess/WebPageProxy.h (included 78 times, avg 3936 ms)
233202 ms: Source/WebKit/WebProcess/WebPage/WebPage.h (included 60 times, avg 3886 ms)
225892 ms: Source/WebKit/Platform/IPC/JSIPCBinding.h (included 125 times, avg 1807 ms)
221271 ms: Source/WebKit/UIProcess/WebProcessProxy.h (included 140 times, avg 1580 ms)
213735 ms: Source/WebKit/Shared/WebCoreArgumentCoders.h (included 253 times, avg 844 ms)
196851 ms: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (included 143 times, avg 1376 ms)
171231 ms: Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (included 141 times, avg 1214 ms)
152283 ms: WebKitBuild/Debug/WebCore.framework/PrivateHeaders/LibWebRTCProvider.h (included 148 times, avg 1028 ms)
150176 ms: Source/WebKit/UIProcess/WebPreferences.h (included 146 times, avg 1028 ms)
138540 ms: Source/WebKit/UIProcess/SuspendedPageProxy.h (included 79 times, avg 1753 ms)
117310 ms: WebKitBuild/Debug/WebCore.framework/PrivateHeaders/GraphicsLayer.h (included 136 times, avg 862 ms)
111221 ms: Source/WebKit/UIProcess/WebURLSchemeHandler.h (included 79 times, avg 1407 ms)
110283 ms: Source/WebKit/UIProcess/WebURLSchemeTask.h (included 80 times, avg 1378 ms)
104550 ms: Source/WebKit/Shared/FocusedElementInformation.h (included 134 times, avg 780 ms)
85368 ms: WebKitBuild/Debug/usr/local/include/wtf/text/WTFString.h (included 426 times, avg 200 ms)
81738 ms: WebKitBuild/Debug/WebCore.framework/PrivateHeaders/SerializedScriptValue.h (included 100 times, avg 817 ms)
78349 ms: Source/WebKit/Shared/SessionState.h (included 114 times, avg 687 ms)
76273 ms: WebKitBuild/Debug/JavaScriptCore.framework/PrivateHeaders/VM.h (included 299 times, avg 255 ms)
71936 ms: Source/WebKit/Platform/IPC/Connection.h (included 338 times, avg 212 ms)
67536 ms: Source/WebKit/Shared/WebBackForwardListItem.h (included 80 times, avg 844 ms)