On Wed, Aug 21, 2013 at 6:53 PM, WANG Chao <chaow...@redhat.com> wrote: > On 08/21/13 at 12:05pm, Kay Sievers wrote: >> On Wed, Aug 21, 2013 at 8:36 AM, WANG Chao <chaow...@redhat.com> wrote: >> >> > --- a/TODO >> > +++ b/TODO >> > @@ -96,8 +96,6 @@ Features: >> > >> > -* do we really need both hasprefix() and startswith()? >> >> It needs a little bit more: >> - the open-coded startswith seems really slow, it should not get more users >> - hasprefix can no longer be compile-time optimized, which is not good > > Apart from the overflow issue hasprefix has, may I ask why hasprefix > can't be complile-time optimized now? What changed?
Your patch replaced hasprefix with startswith. hasprefix was just a define, it operated on static strings with static length, which the compiler can optimize away. startswith is an open-coded function with a counter, which has to be called and cannot really be optimized-away by the compiler. >> We might want something like this: >> http://lists.freedesktop.org/archives/systemd-devel/2013-July/011860.html > > It looks like Lennart has already figured out an optimized startswith: > > #define startswith(s, prefix) ({ \ > size_t _l; \ > _l = strlen(prefix); \ > strncmp(s, prefix, _l) == 0 ? s + _l : NULL; \ > }) > > IMHO, using strncmp() is fast enough. What do you think? strncmp sounds fine instead of the open-coded loop in hasprefix, yes. Kay _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel