Warum ist numpy.array beim Bearbeiten der darin enthaltenen Daten so langsam?
Posted: 27 Dec 2024, 15:04
Ich habe einen Algorithmus geschrieben, der eine lange Liste verwendet. Da numpy.array bei der Verarbeitung langer Daten eine bessere Leistung erbringen sollte, habe ich eine andere Version mit numpy.array geschrieben.
Listenversion:
Array-Version:
Es stellt sich heraus, dass die numpy.array-Version 1x langsamer ist als die list-Version. Das Diagramm:

wobei y0 PrimeTable und y1 PrimeTable2 ist
Warum? numpy.array ist so langsam, und wie kann ich es verbessern?
Listenversion:
Code: Select all
import math
def PrimeTable(n:int) -> list[int]:
nb2m1 = n//2 - 1
l = [True]*nb2m1
for i in range(1,(math.isqrt(n)+1)//2):
if l[i-1]:
for j in range(i*3,nb2m1,i*2+1):
l[j] = False
return [2] + [i for i,v in zip(range(3,n,2), l) if v]
Code: Select all
import math, numpy
def PrimeTable2(n:int) -> list[int]:
nb2m1 = n//2 - 1
l = numpy.full(nb2m1, True)
for i in range(1,(math.isqrt(n)+1)//2):
if l[i-1]:
for j in range(i*3,nb2m1,i*2+1):
l[j] = False
return [2] + [i for i,v in zip(range(3,n,2), l) if v]

wobei y0 PrimeTable und y1 PrimeTable2 ist
Warum? numpy.array ist so langsam, und wie kann ich es verbessern?