Frage bezüglich selbst geschriebener Funktion itoa()

#2065622
Lesenswert?

Hallo liebe Formumsmitglieder!

Ich hätte mal eine kleine Frage die ich mir bisher nicht erklären 
konnte.

Testweise habe ich mir die Funktion itoa() selber geschrieben (steht so 
in der Art auch glaube ich hier irgendwo im Forum) und mir anschließend 
in AVR-Simulator die Anzahl der Takte angesehen um eine 4-stelligen 
integer in eine ASCII-Darstellung umzuwandeln.
Nun meine Frage warum braucht die Funktion aus der stdlib wesentlich 
weniger als meine?

Hier meine Funktion:
1
void my_itoa(uint16_t zahl, char* buffer)  {
2
  int8_t k;
3
  buffer[5] = '\0';
4
  for (k=4; k>=0; k--)  {
5
      buffer[k] = (zahl % 10) + '0';
6
      zahl /= 10;
7
      }
8
  }

itoa() braucht dafür 940 Takte, my_itoa() braucht 2092 Takte, also mehr 
als doppelt soviel. Wo liegt hier mein Fehler?

Dankeschön schon mal.

Schöne Grüße,
Schwanzus Longus
#2065628
Lesenswert?

@  schwanzus_longus

>itoa() braucht dafür 940 Takte, my_itoa() braucht 2092 Takte, also mehr
>als doppelt soviel. Wo liegt hier mein Fehler?

Möglicherweise ist GCC nicht schlau genug, die Division und 
Modulopoeration nur einmal auzuführen. Schau in das generierte *.lss 
File, dort sieht man das.
Liegt im gleichen Verzeichnis wie dei *.hex File.

MFG
Falk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren