httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yann Ylavic <ylavic....@gmail.com>
Subject Re: svn commit: r1715938 - /httpd/httpd/trunk/modules/cache/cache_util.c
Date Tue, 24 Nov 2015 18:11:47 GMT
On Tue, Nov 24, 2015 at 7:03 PM, Jim Jagielski <jim@jagunet.com> wrote:
>
>> On Nov 24, 2015, at 11:18 AM, Graham Leggett <minfrin@sharp.fm> wrote:
>>
>> On 24 Nov 2015, at 6:15 PM, Yann Ylavic <ylavic.dev@gmail.com> wrote:
>>
>>> Not sure:
>>>   if (!strcmp(h, "max-age")
>>>       || ap_cmpcasestr(h, "max-age"))
>>> is likely to be a bit faster than a single ap_cmpcasestr() when it
>>> matches, but much slower when it does not.
>>
>> Yep, that’s the point.
>>
>> The vast majority of comparisons are lowercase for tokens like this. Might as well
test that fast path first before testing the worst case scenario.
>>
>
> Is there REALLY that much of a diff between
>
>         if (ucharmap[*ps1] != ucharmap[*ps2]) {
>
> and
>
>         if (*ps1 != *ps2) {
>
> to muddle up the code like that though??

The test from the other thread including str[n]cmp() says:

$ for i in `seq 0 3`; do
    ./newtest $i 150000000 \
        xcxcxcxcxcxcxcxcxcxcwwwwwwwwwwaaaaaaaaaa \
        xcxcxcxcxcxcxcxcxcxcwwwwwwwwwwaaaaaaaaaa \
        0
done
- str[n]casecmp (nb=150000000, len=0)
time = 8.435895804 : res = 0
- ap_casecmpstr[n] (nb=150000000, len=0)
time = 8.207019751 : res = 0
- ap_casecmpstr[n] w/ index (nb=150000000, len=0)
time = 4.429462481 : res = 0
- str[n]cmp (nb=150000000, len=0)
time = 1.923039981 : res = 0

So strcmp() is really fast, since it probably advances word per word...

Mime
View raw message