Hallo Forum!
Gibt es eine Möglichkeit, mit der ich überprüfen kann, wie effizient/schnell verschiedene Implementierungen von ein und dem selben Algorithmus sind?
Als einfaches Beispiel:
Version 1:
if (i >=0) printf("Positive Zahl!");
Version 2:
if ((i&128)>>7) printf("Positive Zahl!");
Version 1 nutzt einen Vergleichsoperator, bei Version zwei checke ich mit bitweise-UND, ob das Vorzeichenbit gesetzt ist und verschiebe dann um sieben Stellen nach rechts, sodass die if-Anweisung eine 1 oder 0 bekommt, je nachdem, ob positiv oder negativ.
Wie kann ich checken, was schnelleren Code ergibt?
Was bei einer solchen Anweisung egal ist, fällt wohl schon ins Gewicht, wenn man solche Überprüfungen millionenfach durchführen muss.
Grüße,
Sebastian
Effizienz prüfen?
Moderatoren: crack, Krüsty, Marwin
- crack
- Administrator
- Beiträge: 280
- Registriert: Dienstag 21. Dezember 2004, 15:02
- Wohnort: 53783 Eitorf
- Kontaktdaten:
Re: Effizienz prüfen?
Natürlich gibt es die Möglichkeit, zumindest für Prozeduren. Ich habe sowas hier und da mit Prozeduren in Assembler gemacht, aber es dürfte bei allen anderen Compilersprachen genauso gut funktionieren. So mal als 'allgemeines Kochrezept':

- Systemtimer lesen und sichern (Zeitstempel)
- Zählschleife initialisieren für z.B. 1000 Durchläufe
- Label
- Prozeduraufruf
- Sprung zu Label solange Zähler > 0
- Systemtimer lesen und in anderem Register oder Variable speichern
- von dem aktuellen Timerwert den zu erst gesicherten subtrahieren
- Das ergebniss durch die Anzahl der Schleifendurchläufe teilen
mit freundlichen grüssen,
with best regards,
crack
with best regards,
crack