On 24 Nov 2015, at 6:36 PM, Yann Ylavic <ylavic....@gmail.com> wrote:

> Sure, but my point is that the worst case is likely depend on the
> application,

It will depend on the application, yes.

> eg:
> 
>    case 'm':
>    case 'M':
>    if (!strncmp(token, "max-age", 7)
>        || !ap_casecmpstrn(token, "max-age", 7)) {
>        ...
>    }
>    else if (!strncmp(token, "max-stale", 9)
>             || !ap_casecmpstrn(token, "max-stale", 9)) {
>        ...
>    }
>    else if (!strncmp(token, "min-fresh", 9)
>             || !ap_casecmpstrn(token, "min-fresh", 9)) {
>        ...
>    }
>    else if (!strcmp(token, "max-revalidate")
>             || !ap_casecmpstr(token, "must-revalidate")) {

Oops - max-revalidate != must-revalidate

>        ...
>    }
>    else if ...
> 
> is going to be costly when matched against "must-revalidate", or worse
> "my-token”.

In that case make it cheaper for those cases.

Have the length handy to check for a minimum-sane-length, then do a switch on 
the 4th character.

> We could use all str[n]cmp() first, but still it's a lot of
> comparisons, and now duplicated code too.

The duplicated code is not a worry, the worry is to ensure the most common 
cases take the fastest path.

Regards,
Graham
—

Reply via email to