Wir verglichen die mehrstellige Multiplikation von Python und C (gmp von gnu). Die Berechnungszeit auf einem Personal Computer (4 GHz) wird unten angezeigt (Einheit: Sekunden). Dezimal 300 Millionen Stellen (Ergebnis) Berechnet in der Reihenfolge von 1 Mal bis zur Hälfte der Anzahl der Stellen und mehrmals. Der Wert ganz rechts ist die 128-mal berechnete Zeit in 2,36 Millionen Dezimalstellen. python : 1627, 1084, 723, 482, 322, 215, 143, 96 (s) gnu(gmp) : 4.5, 3.9, 3.7, 3,4, 3.2, 2.8, 2.6, 2.2 (s) Sie können sehen, dass Python die Karatsuba-Methode verwendet und gmp FMT (Integer FFT) mit mehr als 1000 Stellen verwendet. Python hat die doppelte Anzahl von Ziffern und benötigt dreimal so viel Zeit (1,5-mal in umgekehrter Reihenfolge im Beispiel). Da gmp eine FMT-Berechnung ist, ist es das logarithmische Verhältnis (Anzahl der Stellen) um die Anzahl der Stellen x die Anzahl der Male. Die Python-Quelle und die detaillierten Ergebnisse für beide finden Sie in der mehrstelligen Multiplikation des Python-Programms unter https://ecc-256.com. Interessanterweise ist Python mit 20 bis 200 Dezimalstellen nur etwa doppelt so langsam (beide sind riesig). Dies liegt wahrscheinlich daran, dass die Sicherung eines Speicherorts für die Ergebnisse und den Zeiger viel Zeit in Anspruch nimmt. Python konvertiert a nur langsam in eine Dezimalzahl mit d10 = Format (a). Die Konvertierung dauert viermal so lange wie die Multiplikation doppelt so viele Ziffern und dreimal so lange. Die Multiplikations- und Konvertierungszeiten von 1,18 Millionen Stellen, 2,36 Millionen Stellen und 4,72 Millionen Stellen werden der Reihe nach angezeigt. Multiplizieren: 0,24, 0,72, 2,19 (s), Konvertieren: 19, 77, 308 (s)
Recommended Posts