I've benchmarked  an empty clang build, which gives the selfcosts below. 
Rule::IsReservedBinding(std::string const&) is below 0.01%, so I think it isn't  critical.
```
21.2% CanonicalizePath(char*, unsigned long*, std::string*)
13.6% DepfileParser::Parse(std::string*, std::string*)
 7.9% State::LookupNode(StringPiece)
 3.6% Lexer::ReadEvalString(EvalString*, bool, std::string*)
 1.6% ManifestParser::ParseEdge(std::string*)
 1.0% std::vector<EvalString, std::allocator<EvalString> >::_M_insert_aux(__gnu_cxx::__normal_iterator<EvalString*, std::vector<EvalString, std::allocator<EvalString> > >, EvalString const&)
```