isKeyword_Dummy (baseline): 2738 [microsec] total, 50 [ns /
lookup].
This one calculates a sum of all identifier code units. Included
for comparison.
isKeyword_Dictionary: 4247 [microsec] total, 242 [ns / lookup].
Check whether an identifier is a keyword using AA (dictionary)
lookup.
isKeyword_SwitchByLengthThenByChar: 1593 [microsec] total, 91
[ns / lookup].
Switch by identifier length at the top, then recursively switch
by each character. Clearly a winner, but I think it can be
improved further.
isKeyword_BinaryArrayLookup: 14351 [microsec] total, 820 [ns /
lookup].
Binary search in an ordered array of keywords.
isKeyword_LinearArrayLookup: 59564 [microsec] total, 3405 [ns /
lookup].
Ditto, search is linear.
isKeyword_UnicodeTrie: 4167 [microsec] total, 238 [ns / lookup].
Lookup a keyword in a trie, created by Dmitry. This will be
improved.
isKeyword_UnicodeTrieBoolLookup: 3466 [microsec] total, 198 [ns
/ lookup].
The same, but only determines whether an identifier is a keyword,
not which exactly.
Total: 104183 identifiers + 17488 keywords.
Analyzed the largest Phobos file (DateTime? I didn't check the
name.) Results are consistent for other files, too.