HomePhabricator

[Clang options] Optimize optionMatches() runtime by removing mallocs

Authored by nadav on Aug 12 2020, 10:47 PM.

Description

[Clang options] Optimize optionMatches() runtime by removing mallocs

The method optionMatches() constructs 9865 std::string instances when comparing different
options. Many of these instances exceed the size of the internal storage and force memory
allocations. This patch adds an early exit check that eliminates most of the string allocations
while keeping the code simple.

Example inputs:
Prefix: /, Name: Fr
Prefix: -, Name: Fr
Prefix: -, Name: fsanitize-address-field-padding=
Prefix: -, Name: fsanitize-address-globals-dead-stripping
Prefix: -, Name: fsanitize-address-poison-custom-array-cookie
Prefix: -, Name: fsanitize-address-use-after-scope
Prefix: -, Name: fsanitize-address-use-odr-indicator
Prefix: -, Name: fsanitize-blacklist=

Differential Revision: D85538

Details

Committed
nadavAug 12 2020, 11:07 PM
Differential Revision
D85538: [Clang options] Optimize optionMatches() runtime by removing mallocs
Parents
rGf902a7eccf30: [HotColdSplit] Fix variable name spelling
Branches
Unknown
Tags
Unknown