Created attachment 272199 [details] WIP We've always said that it's silly to be using HashMap for looking up the atomic string name. Here's a super crude prototype of using alphabet jump table & one-level binary search. This appears to be ~0.5% improvement on PerformanceTests/Bindings/create-element.html but this test only creates div so we need a more comprehensive testing.
Created attachment 272281 [details] WIP Here's a new WIP patch with tests. I was observing a consistent 1-2% gain but I'm no longer seeing that now :( I don't know whether my testing was busted. I'm somehow seeing a lot more variance on my test results now.
Created attachment 336357 [details] WIP2
Created attachment 336359 [details] WIP3 With this patch, we avoid creating AtomicString when creating built-in HTML elements in the HTML parser & createElement. In the case of createElement, we also avoid lowercasing the string.
Attachment 336359 [details] did not pass style-queue: ERROR: Source/WebCore/dom/TagNameLookupTable.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] ERROR: Source/WebCore/dom/TagNameLookupTable.cpp:29: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/WebCore/html/parser/AtomicHTMLToken.h:30: Alphabetical sorting problem. [build/include_order] [4] Total errors found: 3 in 13 files If any of these errors are false positives, please file a bug against check-webkit-style.
Created attachment 336429 [details] WIP4 (fixed build)
Hm... this appears to be an overall regression in Speedometer because there are enough non-standard attributes set. I guess we won't do this.