httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yann Ylavic <ylavic....@gmail.com>
Subject Re: strncasecmp
Date Mon, 23 Nov 2015 22:50:35 GMT
Please note that the changes in ap_str[n]casecmp(), ie:
        ++ps1;
        ++ps2;
was a first try/change which (obviously) did nothing.
You may ignore it.


On Mon, Nov 23, 2015 at 11:43 PM, Yann Ylavic <ylavic.dev@gmail.com> wrote:
> with attachment...
>
> On Mon, Nov 23, 2015 at 11:42 PM, Yann Ylavic <ylavic.dev@gmail.com> wrote:
>> I modified your test program a bit (to measure time from it, see
>> attached), tried with -O{2,3,s}, and except -Os I always have better
>> results with the "optimized" version, eg:
>>
>> $ ./a-O3.out 0 150000000 xcxcxcxcxcxcxcxcxcxcwwwwwwwwwwaaaaaaaaaa
>> xcxcxcxcxcxcxcxcxcxcwwwwwwwwwwaaaaaaaaaa 0
>> <string.h> (nb=150000000, len=0)
>> time = 8.424984 : res = 0
>>
>> $ ./a-O3.out 1 150000000 xcxcxcxcxcxcxcxcxcxcwwwwwwwwwwaaaaaaaaaa
>> xcxcxcxcxcxcxcxcxcxcwwwwwwwwwwaaaaaaaaaa 0
>> Optimized (nb=150000000, len=0)
>> time = 8.212137 : res = 0
>>
>> Possibly gcc (v4.4.5 here) is clever enough to optimize/inline/cheat
>> when given standard (no custom) code, since I had similar results than
>> yours with the original test.c...
>>
>> How does this one work with gcc-5.2?
>>
>> On Mon, Nov 23, 2015 at 10:07 PM, Marion & Christophe JAILLET
>> <christophe.jaillet@wanadoo.fr> wrote:
>>> I just made a small application which takes as command line parameters the
>>> number of iteration to run, which version of the algorithm to use, the 2
>>> strings to compare and the length to compare (or 0 for the non 'n' versions)
>>>
>>>
>>> Compiled using
>>>     gcc -O3 test.c
>>>
>>> Tested using
>>> linux:~/Code_Source$ time ./a.out 1 100000000
>>> xcxcxcxcxcxcxcxcxcxcwwwwwwwwwwaaaaaaaaaa
>>> xcxcxcxcxcxcxcxcxcxcwwwwwwwwwwaaaaaaaaaa 0
>>> Optimized (nb=100000000, len=0)
>>> res = 0
>>>
>>> real    0m4.193s
>>> user    0m4.192s
>>> sys    0m0.000s
>>>
>>>
>>>
>>> linux:~/Code_Source$ time ./a.out 0 100000000
>>> xcxcxcxcxcxcxcxcxcxcwwwwwwwwwwaaaaaaaaaa
>>> xcxcxcxcxcxcxcxcxcxcwwwwwwwwwwaaaaaaaaaa 0
>>> <string.h> (nb=100000000, len=0)
>>> res = 0
>>>
>>> real    0m1.708s
>>> user    0m1.704s
>>> sys    0m0.000s
>>>
>>>
>>>
>>>
>>> See atatchement.
>>>
>>> CJ
>>>
>>>
>>>
>>> Le 23/11/2015 21:33, Yann Ylavic a écrit :
>>>>
>>>> Hi Christophe,
>>>>
>>>> On Mon, Nov 23, 2015 at 9:12 PM, Christophe JAILLET
>>>> <christophe.jaillet@wanadoo.fr> wrote:
>>>>>
>>>>> I tried to do some but the benefit of the optimized version is not that
>>>>> clear, at least on my system:
>>>>>     gcc 5.2.1
>>>>>     Linux linux 4.2.0-18-generic #22-Ubuntu SMP Fri Nov 6 18:25:50 UTC
>>>>> 2015
>>>>> x86_64 x86_64 x86_64 GNU/Linux
>>>>
>>>> Unfortunately, gcc 5.2.1 (i.e. latest compilers' versions) are not
>>>> widely used...
>>>>
>>>> Did you try a code like ap_proxy_port_of_scheme() with values which
>>>> are unknown schemes?
>>>> Or even worse cases, with similarly chained strcasecmp() looking for
>>>> eg. "httpx" in something like {"httpa", "httpb", "httpc", ...,
>>>> "httpw"}?
>>>>
>>>> Regards,
>>>> Yann.
>>>>
>>>

Mime
View raw message