asdfman
Commander
- Registriert
- März 2008
- Beiträge
- 2.315
Schönengutenabend. Hab da mal eine Frage!
strcmp(), memcmp() undsoweiter brechen normalerweise beim Auftreten des ersten Unterschieds ab. Ich möchte das vermeiden, deshalb habe ich eine eigene Version von memcmp gebastelt:
Ich bin nun wirklich kein Experte für Compiler und Optimierung und andere Lowlevel-Sachen. Deshalb meine Frage an diejenigen, die sich damit auskennen:
Kann ich davon ausgehen, dass die Laufzeit dieser Funktion ausschließlich von len abhängt?
Wenn nein: Bitte erklärt mir, warum. Finde solche Dinge sehr interessant. Bonuspunkte für Verbesserungsvorschläge :3
strcmp(), memcmp() undsoweiter brechen normalerweise beim Auftreten des ersten Unterschieds ab. Ich möchte das vermeiden, deshalb habe ich eine eigene Version von memcmp gebastelt:
Code:
int my_memcmp(const void *buf1, const void *buf2, size_t len) {
size_t index;
uint8_t *cbuf1 = buf1, *cbuf2 = buf2;
int diff, ret = 0;
for(index = 0; index < len; index++) {
diff = cbuf1[index] - cbuf2[index];
if(diff && !ret)
ret = diff;
else
diff = ret;
}
return ret;
}
Ich bin nun wirklich kein Experte für Compiler und Optimierung und andere Lowlevel-Sachen. Deshalb meine Frage an diejenigen, die sich damit auskennen:
Kann ich davon ausgehen, dass die Laufzeit dieser Funktion ausschließlich von len abhängt?
Wenn nein: Bitte erklärt mir, warum. Finde solche Dinge sehr interessant. Bonuspunkte für Verbesserungsvorschläge :3