[llvm-dev] StringSwitch efficiency

Paul C. Anagnostopoulos via llvm-dev llvm-dev at lists.llvm.org
Wed Oct 28 11:09:53 PDT 2020


StringSwitch just uses a series of Case functions that compare the target against each case string. Once the target is matched, the remaining Case functions bypass the comparison. One way or the other, it goes through all the Case's. I don't think there is any way to optimize this. Does anyone know if the compiler does something clever?

At 10/28/2020 12:58 PM, David Blaikie wrote:

>On Wed, Oct 28, 2020 at 9:56 AM Paul C. Anagnostopoulos via llvm-dev <<mailto:llvm-dev at lists.llvm.org>llvm-dev at lists.llvm.org> wrote:
>At what point should I consider changing from a StringSwitch construct to something more efficient? TableGen has a few of them. In particular, the switch for looking up a bang operator has about 40 cases, all short strings.
>
>One trivial improvement would be to split it into two StringSwitch's based on the first letter of the operator name.
>
>If that improves performance, then it sounds like a bug/area for improvement in StringSwitch itself, perhaps? 



More information about the llvm-dev mailing list