Ich muss den folgenden Code beschleunigen:
%Vor% N
ist um 30
, also ist der Code sehr langsam (es dauert ungefähr 33 Stunden auf meinem Laptop). Das Argument der Funktion f()
ist die binäre Repräsentation des Index i
und f()
kann eine beliebige vektorisierbare Funktion sein. Ich bin kein Experte, aber um den Code zu beschleunigen, dachte ich daran, die for
-Schleife loszuwerden, was bedeutet, dass ich das Argument von f()
vektorisieren muss. Mit anderen Worten, ich muss eine Matrix mit den binären Darstellungen der Zahlen von 0
bis 2**N
erstellen. Dies kann durch den folgenden Code erreicht werden:
das habe ich bei diesen Link gefunden . Es scheint mir jedoch, dass itertools
sehr langsam ist und eindeutig viel Speicher braucht, da 2**30
ungefähr eine Milliarde beträgt.
Haben Sie Vorschläge, diesen Code schneller zu machen? Vielen Dank im Voraus.
Immer Profil:
%Vor% Sie können sehen, dass die Methode itertools.product
wesentlich schneller ist, da sie nicht mit Strings herumspielen muss.
Das Problem könnte sein, dass die meiste Zeit in der Funktion f
verbracht wird.
Eine andere Lösung könnte darin bestehen, dass f
eine Ganzzahl akzeptiert und sie als Binärfeld verwendet.
Tags und Links python loops performance