> On Jan. 26, 2016, 3:14 a.m., Anand Mazumdar wrote: > > LGTM. Puzzled me for a bit at why the temporary is being constructed > > (assuming the correct `operator==` for `const char*` was being invoked) > > till I looked up here: > > > > https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/basic_string.h#L2468 > > > > ``` > > Determines the effective length rlen of the strings to compare as the > > smallest of size() and the length of a string constructed from @a __s. > > ```
Maybe I am too dense, but I think this comment is misleading, see the impl https://github.com/gcc-mirror/gcc/blob/master/libstdc++-v3/include/bits/basic_string.tcc#L1390. Nothing there seems to construct a temporary string. What could cause different performance for `string` and `const char*` is that the length of a `const char*` might need to be calculated at runtime (technically a compiler could use the known length of the literal to make this a nop since this is all implemented in headers, https://code.woboq.org/gcc/include/c++/5.2.0/bits/char_traits.h.html#__gnu_cxx::char_traits::length). The actual comparsion is just a `memcmp` (https://code.woboq.org/gcc/include/c++/5.2.0/bits/char_traits.h.html#__gnu_cxx::char_traits::length). - Benjamin ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/42762/#review116256 ----------------------------------------------------------- On Jan. 26, 2016, 1:10 a.m., Joris Van Remoortere wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/42762/ > ----------------------------------------------------------- > > (Updated Jan. 26, 2016, 1:10 a.m.) > > > Review request for mesos and Michael Park. > > > Repository: mesos > > > Description > ------- > > This validation is used inside resource math which in turn is used > heavily in the code base. > The temporary string allocations caused a significant performance > degradation in this critical path. > > > Diffs > ----- > > src/common/roles.cpp 5be807018ff84174cf0cabb933f6828d458d3846 > > Diff: https://reviews.apache.org/r/42762/diff/ > > > Testing > ------- > > make check > > > Thanks, > > Joris Van Remoortere > >
