Einzelnen Beitrag anzeigen
Alt 22.05.05, 04:07   #11 (permalink)
Ray
 
Registriert seit: 06.08.02
Ray Leistung: Facit NTK
Likes: 0
Standard

Ich habe nicht gesagt, daß der Vergleich selbst schneller ist.

Wenn ich zwei Strings mit strncmp vergleiche, kann es mir eigentlich egal sein, wie gross ich den Bereich wähle, da ja eh nur höchstens bis zum Terminator geprüft wird. Daher muss ich vorher nicht extra prüfen bzw. speichern, wie lang meine Zeichenkette(n) ist/sind. Ich kann im faulsten Fall sogar einfach die größte mögliche Länge eines Strings in meinem Problem angeben.

Bei memcmp wird jedoch u.U. der komplette Bereich überprüft. Das heisst: in diesem Falle und wenn hinter dem Terminator noch weitere Daten stehen, und der Bereich größer ist als der Abstand vom ersten Zeichen bis zum Terminator, wird das Ergebnis verfälscht. Deswegen muss ich irgendwie sicherstellen, daß nur bis zum Terminator überprüft wird, also muss ich extra Code einbauen, der das bewirkt. Das kostet je nach Problem mehr oder weniger Zeit. Im Allgemeinen bekommt man das mit strncmp/strcmp dann schneller. Das hängt natürlich auch vom Problem und den Eingaben und man kann sicher Fälle für oder gegen diese Aussage konstruieren, aber im Allgemeinen wird das schneller laufen. Das weiss ich aus leidvoller Erfahrung mit Mooshak.
Ray ist offline   Mit Zitat antworten
 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61