Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Lookup tables for toupper() and tolower() make Curl_strcasecompare()
about 1.5 times faster. Reorganising Curl_strcasecompare() to fully
exit early then also allows simplifying the check at the end, for
another 15%. In total, the changes make Curl_strcasecompare() around
1.6 to 1.7 times faster.
Note that these optimisation assume ASCII. The original Curl_raw_toupper()
and raw_tolower() look like they already made that assumption, but confirmation would be good.
For short strings (I tested 4 to 8 characters) this is competitive with glibc, with this code being slightly faster on some CPUs and some lengths, and glibc being slightly faster on others. For longer strings glibc starts getting significantly faster (but the locale issue of course remains)