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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Warum ist numpy.array beim Bearbeiten der darin enthaltenen Daten so langsam?

by Guest » 12 Jan 2025, 18:00

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?

Top