Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Eine Möglichkeit die CCITT-CRC16 Checksumme zu generieren.
Creation by wuf.
Suchte im Internet nach einer Python-Varianten , fand aber
nur Beispiele in C, BASIC und ASM. Habe schlussendlich
eine ASM-Variante nach Python konvertiert. Vielleicht gibt
es noch andere Python-Varianten?
Besten Dank für Deinen genialen Optimierungs-
Vorschlag. Deine CCITT-CRC16 Funktion sieht
wirklich sehr schlank aus. Ich nehme an, dass
Du nichts dagegen hast, wenn ich meine etwas
schwerfälligere Variante durch Deine optimierte
ersetze?
Noch eine Frage was die Ausführungsgeschwindigkeit
anbelangt. Gibt es in Python eine einfache
Möglichkeit um die Ausführgeschwindigkeit einer
Funktion z.B. dieser CCITT-CRC16 Funktion zu messen.
Klar wird eine solche Messung bei jedem PC je nach
seiner Performance anderst ausfallen aber es wäre
interessant zu sehen was den Zeitgewinn der Optimierung
brachte.
Vielleicht ist es auf den heutigen PC's mit > 1GHz
gar nicht möglich solch eine klein Zeitdifferenz zu
messen?
Du kannst Python die Zeit ja selber messen lassen. wichtig ist nur, dass er lange genug rechnet, damit de Messdaten genauer sind. Hintergrundprogramme können stören, weil die ja auch CPU Leistung haben wollen. Desto länger bzw öfter (dann halt mit Durchschnitt) das rechnet desto besser.
Messen tust du mit der Funktion clock aus dem Modul time
Du kannst die Routine ja auch in einer Schleife aufrufen und dann die zeit mit der von Milan gezeigten Methode messen, die er für 10000 Durchläufe braucht.
Habe Deine Messmethode auf meine CCITT-CRC16
und Dookie's Variante angewandt. Dabei rufe
ich die Funktion 10'000 mal auf. Dookie's
Funktion bring auf meinem PC eine Ausführge-
schwindigkeitssteigerung von sage und schreibe
33%. Super! Es ist immer gut zu sehen wie es
andere machen. Das bringt einem automatisch
eine Verfeinerung bei der Anwendung der
Programmiersprache Python.
Besten Dank für Eure interessanten Tips!
Gruss Fritz
schön daß Dir mein Source so gefällt, wenn Du noch Fragen hast, warum ich was so und nicht anders gemacht hab, frag einfach. Jetzt jede einzelne Änderung zu erörtern würd wohl den Rahmen sprengen.
Du könntest auch noch in der Zeile
grosse Unterschiede wird das zwar nicht mehr bringen, aber es könnte zeigen, wie gut Python von sich aus optimiert. Mit Assembler sollte, abhängig vom Prozessor, die Additonsvariante am schnellsten sein gefolgt vom Bitshift und weit abgeschlagen die Multiplikation.
Zu Pyrthon und Profiling findet sich einiges im Internet --- und trivial scheint es nicht zu sein (wenn man's richtig machen will --- aber meist reichen wohl obere Vorschläge)