File Write to slow



  • Hallo zusammen
    In einem Programm schreibe ich mittels fprintf Daten auf ein Netzlaufwerk.
    Bei den Daten handelt es um ca. 500kb-1.5mb welche ich mittels fprintf/fwrite auf das Laufwerk schreibe. Dieser Prozess benötigt extrem viel Zeit... [ca. 10kb/s].
    Nun habe ich versucht die Daten nicht Zeilenweise zu schreiben sondern alles in einem Block. Dies hat dauert in etwa gleich lang.
    Wo liegt das Problem?


  • Mod

    fwrite schrieb:

    Wo liegt das Problem?

    Glaubst du, diese Frage kann man nach deiner Beschreibung beantworten?



  • Speichere die Daten lokal.
    Ist es immer noch langsam, liegt es nicht am Netzwerk.

    Es kann dann dein (Betriebs-)System sein oder an der Berechnung der Daten liegen.



  • Die Daten müssen im netzwerk abgespeichert werden.
    Lokal habe ich es ca. 2000 gschrieben.
    Wie werden die Daten ins Netzwerk übermittelt?
    Es sieht so aus, dass die Daten in Kleine Blöcke aufgespittet werden.
    Im Explorer kann man das Wachstum der Datei live verfolgen?
    Kann man Blockgrössen definieren? Welche funktionen werden unter windows im fwrite aufgerufen um die Datei zu schreiben?



  • Also ist es ein Sache vom Betriebssystem/Netzwerk und nicht von deinem Programm.
    Daher kannst du schlecht von C aus etwas machen.

    fwrite schrieb:

    Kann man Blockgrössen definieren?

    Du kannst die Buffergröße für den Stream ändern mit setvbuf und setbuf. Das ist aber nicht die Lösung bei deinem Problem.

    fwrite schrieb:

    Kann man Blockgrössen definieren?

    Ja, da musst du in der Registry* rum spielen.
    Wo, weiß ich aber auch nicht.

    *Du hast vom Explorer geschrieben, daher gehe ich mal von Windows aus.



  • Ja das ganz läuft unter Windows.
    In der Registy möchte ich nicht Hand anlegen müssen.
    Wird es ev mit Windows Funktion funktionieren? Oder macht das keinen unterschied.



  • Beim Netztwerk gibt es auch noch die andere Seite. Wie schnell kann der Server die Daten annehmen.
    Ist ein Virenscanner dazwischen. Kannst du den testweise deaktivieren?

    Du solltest erstmal klären, wo dein Flaschenhals liegt, bevor du dein ganzes Programm änderst.


Anmelden zum Antworten