Deutsch   English   Français   Italiano  
<20241223174708.000062b3@yahoo.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Michael S <already5chosen@yahoo.com>
Newsgroups: comp.lang.c++
Subject: Re: constexpr is really very smart!
Date: Mon, 23 Dec 2024 17:47:08 +0200
Organization: A noiseless patient Spider
Lines: 59
Message-ID: <20241223174708.000062b3@yahoo.com>
References: <vjndub$2glcu$1@paganini.bofh.team>
	<20241216112808.00003f74@yahoo.com>
	<86jzbyghdw.fsf@linuxsc.com>
	<20241218013342.0000518a@yahoo.com>
	<20241218135131.00000006@yahoo.com>
	<86zfksf4lb.fsf@linuxsc.com>
	<20241220021703.00003e9e@yahoo.com>
	<86msgqezb8.fsf@linuxsc.com>
	<20241222000708.000007ef@yahoo.com>
	<86a5cnfubs.fsf@linuxsc.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 23 Dec 2024 16:47:27 +0100 (CET)
Injection-Info: dont-email.me; posting-host="d671c883c82cc5192b50168e923ee646";
	logging-data="1194624"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/sdkyZjj0ZQ1WNafRWNvLrEY1bg6JGtgE="
Cancel-Lock: sha1:lDnkcmAwmgFpE3tFuGBpW4SguAQ=
X-Newsreader: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-w64-mingw32)
Bytes: 2769

On Sun, 22 Dec 2024 10:25:59 -0800
Tim Rentsch <tr.17687@z991.linuxsc.com> wrote:

> Michael S <already5chosen@yahoo.com> writes:
> 
> > On Fri, 20 Dec 2024 14:59:07 -0800
> > Tim Rentsch <tr.17687@z991.linuxsc.com> wrote:
> >  
> >> I ran a python version to compute fibonacci( 10000000 ).  This code
> >> ran 30% faster than the previous version, which I would be is
> >> almost entirely due to the expression factoring with 'c'.  Great!  
> >
> > This one does fib(10M) in 89 msec on my very old home PC.
> >
> > [code]  
> 
> You are the speed king!

But approximately the same code in python is MUCH slower.
2.9 sec on 11 y.o. PC that still serves me as a desktop at work. 
2.0 sec on 5.5 y.o. mall server.

I don't really understand why.
I expected that nearly all time is spend in multiplication of few huge
numbers, probably over 75% of time in last couple of steps (6
multiplications). And I was under impression that internally Python
uses the same GMP library that I used in C. So I expected the same
speed, more or less. May be, 1.5x slowdown because of less efficient
memory handling in Python. 35x difference is a big surprise.


Here is my python routine.

def fib(n):
  if n < 1:
    return 0

  tmp = n
  msb = 1
  while tmp > 1:
    msb += msb
    tmp //= 2

  f0=0; f1=1;
  while msb > 1:
    ff0 = f0*f0 + f1*f1
    f1 = (f0+f0+f1)*f1
    f0 = ff0
    msb //= 2
    if msb & n:
      f0 = f1
      f1 += ff0
  return f1