Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.lang.c++
Subject: Re: constexpr is really very smart!
Date: Fri, 20 Dec 2024 14:31:54 -0800
Organization: A noiseless patient Spider
Lines: 54
Message-ID: <86r062f0kl.fsf@linuxsc.com>
References: <20241216112808.00003f74@yahoo.com> <86jzbyghdw.fsf@linuxsc.com> <20241218013342.0000518a@yahoo.com> <867c7whol9.fsf@linuxsc.com> <20241218220006.00003f8e@yahoo.com> <86v7vgf3tb.fsf@linuxsc.com> <20241219234549.00001902@yahoo.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Fri, 20 Dec 2024 23:31:55 +0100 (CET)
Injection-Info: dont-email.me; posting-host="7b456885956cc1389d72eb0540418a63";
logging-data="3851431"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+A1/0Ni+9QGUBTqgV0ytRmhjU3D2+ijZg="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:TB+JpU4c2oqdsGfv8ry2oBKvays=
sha1:18tqDcSycdhTRwF3C1OQEsv12B0=
Bytes: 3273
Michael S writes:
> On Thu, 19 Dec 2024 00:57:20 -0800
> Tim Rentsch wrote:
>
>> Michael S writes:
>>
>>> On Wed, 18 Dec 2024 09:45:38 -0800
>>> Tim Rentsch wrote:
>>>
>>>> Michael S writes:
[...]
>>>>> According to my measurement gear, in range 0 to 92 there are few
>>>>> points where [the code I posted] is faster than simple loop, but
>>>>> in majority of cases it is slower.
>>>>
>>>> I'm at a loss to understand how this could happen. In my own
>>>> measurements, the code shown above runs faster than a simple loop
>>>> in all cases above n > 12, more than twice as fast when n > 17,
>>>> more than three times as fast when n > 42, and going up from
>>>> there. What might account for these radically different results?
>>>
>>> May be, number of repetitions?
>>> I run the test only once. That gives relative advantage to smaller
>>> code which is less sensitive to cold ICache and to cold branch
>>> predictors.
>>
>> That's an interesting idea. Can you also run a measurement where
>> the code is run inside loops? I think it would be instructive
>> to compare the results under the two approaches.
[...]
>
> I feel that running fib(n) with the same n in loop too unrealistic.
> So I decided to run, at least, with different values of n.
I agree, that is a better choice for a measurement test load.
> Ended up spending about a hour just to build a test bench.
>
> The answer is - in a loop of more than dozen iterations your code is
> indeed faster. Esp. so for hundred or more iterations.
I'm happy to learn that my instincts were validated here. And I
also learned something, about the effects of code warmup. Very
interesting.
> Here is my test bench. [...]
Thank you for that. Sadly I am not able to run it because my
test environment is lacking _rdtsc(), and I haven't been able
to find out how to install it.
By the way, I send you an email earlier today. Did that get to
you?