Page 1 of 1

Warum ist numpy.array beim Bearbeiten der darin enthaltenen Daten so langsam?

Posted: 27 Dec 2024, 15:04
by Anonymous
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:

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]
Array-Version:

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]
Es stellt sich heraus, dass die numpy.array-Version 1x langsamer ist als die list-Version. Das Diagramm:
Image
wobei y0 PrimeTable und y1 PrimeTable2 ist
Warum? numpy.array ist so langsam, und wie kann ich es verbessern?