Geschwindigkeit von fprintf (unter gewissen Randbedingungen)



  • Heho, ich weiß nicht ob ich genug input liefern kann für eine adäquate Antwort, aber ich versuchs mal:

    Studienbedingt arbeite ich an einem Roboter der über diverse Gelenke verfügt welche über einen Canbus in Verbindung mit einem Leitrechner stehen.
    Ich soll nun diverse von den Gelenken versendete Daten auf dem Leitrechner speichern.
    Jetzt stellt sich mir die Frage ob, wenn ich die Daten direkt nach dem Eintreffen auf dem zur verfügungstehenden Flashspeicher via fprintf(daten,"a") speichere, dies das Zeitverhalten (entscheidend) beeinflusst.
    Es kommen pro Gelenk Daten(ca. 16 byte pro takt) im 10 ms Takt an(gibt mehr als 15 Gelenke).
    Ich frage mich ob vllt das zugreifen auf den Speicher(also nicht das schreibnen an sich) zu lange dauert.
    Vielen Dank für eure Hilfe.



  • Was für ein Rechner ist denn der Leitrechner?

    Ansonsten ist printf von der Rechenzeit relativ teuer, da erst der Formatstring ausgewertet werden muss.
    Bei deinem Beispiel ist fputs() oder sogar fputc() schneller.

    16 Byte/Messung/Gelenk * 16 Gelenke * 100 Messungen/sek macht nur 25 KiB/sek.

    Für einen PC kein Problem. Bei einem Mikrocontroller mag das anders aussehen.



  • Du kannst die Werte einfach in ein "Array" packen und spaeter speichern.

    Ich frage mich ob vllt

    Probiere es aus!



  • Bei solchen zeitkritischen Sachen solltest du an die Pufferung der Streams denken und nach jeder Output-Aktion ein fflush(ostream) spendieren, bzw. dir setvbuf mal anschauen.


Anmelden zum Antworten