Sujet : Re: constexpr is really very smart!
De : tr.17687 (at) *nospam* z991.linuxsc.com (Tim Rentsch)
Groupes : comp.lang.c++Date : 20. Dec 2024, 23:31:54
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <86r062f0kl.fsf@linuxsc.com>
References : 1 2 3 4 5 6 7 8
User-Agent : Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Michael S <
already5chosen@yahoo.com> writes:
On Thu, 19 Dec 2024 00:57:20 -0800
Tim Rentsch <tr.17687@z991.linuxsc.com> wrote:
>
Michael S <already5chosen@yahoo.com> writes:
>
On Wed, 18 Dec 2024 09:45:38 -0800
Tim Rentsch <tr.17687@z991.linuxsc.com> wrote:
>
Michael S <already5chosen@yahoo.com> 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?