Veröffentlicht 26. August 201114 j Hallo liebe Gemeinde, da ja alles schnell gehen soll mal eine generelle Frage zum Dateikopieren ob lokal oder LAN oder INet: Was wäre die optimale Puffergröße zum Lesen bzw. Schreiben? Zur Zeit arbeite ich mit 4096 Byte pro Read/Write-Schleifendurchlauf bzw. lasse ich mir die Blockgröße des Zieldatenträgers geben, meistens 4k, im INet ca. 2k. Ist es eigentlich notwendig bzw. sinnvoll sich die Blockgröße des Zieldatenträgers geben zu lassen, um eine Dateifragmentierung zu verhindern bzw. möglicht gering zu halten? Hier im Forum habe ich gelesen, dass man auch 1% der Dateigröße als Puffergröße nehmen kann. Wäre das eine generelle Lösung?
26. August 201114 j Ich weis nicht genau was du machst und wofuer, aber ich denke mal ich kann folgendes fuer einen Großteil aller Anwendungen sagen: Du solltest die Puffergroeße groeßer waehlen. 4K Bloecke zu lesen senkt die I/O- Leistung des Datentraegers dramatisch ab. Ab 64K oder 512K wenn moeglich erreichst du meist die hoechste Geschwindigkeit. Das sollte dynamisch gehandhabt werden. Bei kleinen Datenbloecken sollte auch mit kleinen Bloecken gearbeitet werden. Mit 4K erhoehst du den Overhead zudem dramatisch. Teste es doch einfach mal aus.
1. September 201113 j Autor Es geht darum Dateien (möglichst schnell) zu kopieren, sowohl lokal oder im LAN oder über Internet. Wie ermittelt man die optimale Puffergröße? Ich würde mit 64k*BufMulti(1) anfangen und wenn der Lese- und Schreibvorgang weniger als eine Sekunde dauert, den BufMulti um 1 erhöhen oder wenn es länger dauert wieder um 1 verringern. Kann man das so machen?
1. September 201113 j Ich weiss nicht. Hab sowas nie gemacht. Eine Idee waere, erst einmal vor dem Kopieren Infos zu allen Dateieen zu suchen. Wenn du die Dateigroeße ermittelt hast kannst du dann ja schon mal die Puffergroeße festlegen. So lange wie es geht in etwa der Dateigroeße (4K >> 32K >> 64K >> 128K >> 512K oder feiner aufgeloest) und ab 512K machst du das Maximum. Du kannst auch noch gleich mehrere Dateieen einlesen und aus einem Puffer gleichzeitig schreiben. So kannst du je nach System den Overhead reduzieren. Das kannst du ja machen sobald du auf verschiedene Datentraeger kopierst. Ist es ein und der Selbe dann erst lesen und dann schreiben. Beim Verschieben auch letzte Vorgehensweise. Erst wenn die Datei geschrieben wurde die Quelldatei entfernen. Ich denke mal je flexibler du das mit den Datenbloecken loest umso besser kannst du den Kopiervorgang beschleunigen. So wuerde ich das erstmal versuchsweise angehen. Ich denke mal da gibts noch wesentlich bessere Konzepte etc. Wie gesagt, hab sowas noch nie gemacht. Bearbeitet 1. September 201113 j von FfFCMAD
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.