Re: MemoryError lösen
Verfasst: Samstag 1. Januar 2011, 17:40
Bei Unix-artigen Betriebssystemen kann man mit "nice" die Priorität eigener Prozesse reduzieren. Der Administrator kann sie auch erhöhen, was dann wohl der Funktion des Task-Managers entspricht. Ist aber auch total egal, denn wenn der Rechner beim Berechnen der Prüfsummen ist und sonst nichts zu tun ist, dann arbeitet er da auch zu 100%.
Der beste Tipp ist daher IMHO, nicht drei - IMHO redundante - message digests zu berechnen. MD5 geht am schnellsten, SHA256 dauert am längsten. Reicht nicht einfach nur SHA1?
Da die Berechnung sowieso von einer C-Funktion erfolgt, kann man da in Python auch nichts drehen.
Am ehesten hilft es, mit einem 64-Bit-Betriebssystem bzw. Programm zu arbeiten. Ich weiß noch, dass unter Java die Krypto-Sachen einfach mal Faktor 2 schneller waren, als ich von einer 32-Bit-VM auf eine 64-Bit-VM (auf einem 64-Bit-Betriebssystem) umgestellt hatte. Ich weiß nicht, was Python für die message digests benutzt. OpenSSL? Möglicherweise könnte da eine per JVM optimierte Java-Variante des Programms schneller sein, als eine mit Standardeinstellungen übersetzte statische C-Variante. Hotspot ist hier verdammt gut.
Stefan
Der beste Tipp ist daher IMHO, nicht drei - IMHO redundante - message digests zu berechnen. MD5 geht am schnellsten, SHA256 dauert am längsten. Reicht nicht einfach nur SHA1?
Da die Berechnung sowieso von einer C-Funktion erfolgt, kann man da in Python auch nichts drehen.
Am ehesten hilft es, mit einem 64-Bit-Betriebssystem bzw. Programm zu arbeiten. Ich weiß noch, dass unter Java die Krypto-Sachen einfach mal Faktor 2 schneller waren, als ich von einer 32-Bit-VM auf eine 64-Bit-VM (auf einem 64-Bit-Betriebssystem) umgestellt hatte. Ich weiß nicht, was Python für die message digests benutzt. OpenSSL? Möglicherweise könnte da eine per JVM optimierte Java-Variante des Programms schneller sein, als eine mit Standardeinstellungen übersetzte statische C-Variante. Hotspot ist hier verdammt gut.
Stefan