logoalt Hacker News

How Fast is Python 3.15?

29 points • by Qem • yesterday at 9:52 PM • 19 comments • view on HN

Comments

DroneBetter • today at 1:36 AM

you should include a faster version of the fibonacci function with exponentiation by squaring

  def fibonacci(k):
    a,b=(0,1)
    for i in range(k.bit_length()-1,-1,-1):
      d=a**2
      c=2*a*b-d
      d+=b**2
      (a,b)=(d,c+d) if k>>i&1 else (c,d)
    return a
see https://oeis.org/wiki/User:Natalia_L._Skirrow/linear_recurre... (warning: old and bad and in need of revision), https://github.com/sympy/sympy/pull/30452 and https://github.com/sympy/sympy/pull/30541 for details of how to make similarly fast programs for arbitrary linear-recurrent sequences.

you can also encode polynomials into integers; see https://mathstodon.xyz/@peterluschny/116320199782572958 and the following prog from https://codegolf.stackexchange.com/a/279771

  lambda n:pow(p:=2<<n,n,p*p+~p)//p
both of these would be more intensive on the arithmetic side rather than control flow

also you could at least wrap the existing one in a `functools.cache`

makaimc • yesterday at 11:33 PM

35 years on since the first public Python release and there's still so much room for improvement in its performance. These tests by Miguel are a useful quick check on that progress in 3.15 even if as he admits it's impossible to get "an objective and universal measure of the performance of a programming language".

brianwawok • yesterday at 11:50 PM

So Claude can convert python code bases to rust or golang, and give you an easy 10x speed boost. Much better than waiting for Python performance to improve

➕ show 3 replies
rurban • today at 12:38 AM

2 benchmarks only? A very broad sense of coverage

bjourne • today at 1:34 AM

My pet peeve are numbers with too many decimals. If you only run a benchmark three times and take the arithmetic mean you don't have five or more significant digits. At best, you have two. And for benchmarking the geometric mean is a far superior mean.

➕ show 1 reply