datei kopieren
-
nicht echt oder? gibts hier nur noch trolle
-
c.rackwitz schrieb:
nicht echt oder? gibts hier nur noch trolle
was meinst du damit?
-
c.rackwitz schrieb:
nicht echt oder? gibts hier nur noch trolle
Zuviel Alkohol getrunken, das du jetzt beim in den Spiegel schauen doppelt siehst ?
-
infos schrieb:
ist länge 1 leistungsfähiger? woran kann ich so etwas erkennen?
Ich hab das jetzt erst recht einmal ausprobiert und es hat sich selbst bei einer 10 MB großen Textdatei kein wesentlicher Unterschied bei der Zeitmessung ergeben.
Also als Fazit würd ich sagen es ist wumpe ob man 1 oder 4096 nimmt.
Gruß, p.
-
Achja und einen hätte ich da noch,
@infos:Wenn du portablen Code schreiben möchtest, der sich also auf möglichst vielen Rechnern kompilieren lässt, dann würd ich die Funktionen fopen, fread, fprintf usw benutzen.
Beim Windows VC-Compiler z.B. wirst du die Funktion open vergeblich suchen.
So und jetzt geh ich erstmal raus, in die Sonne.
Gruß, p.
-
proggingmania schrieb:
infos schrieb:
ist länge 1 leistungsfähiger? woran kann ich so etwas erkennen?
Ich hab das jetzt erst recht einmal ausprobiert und es hat sich selbst bei einer 10 MB großen Textdatei kein wesentlicher Unterschied bei der Zeitmessung ergeben.
Also als Fazit würd ich sagen es ist wumpe ob man 1 oder 4096 nimmt.
Gruß, p.ach ja? zeig mal den code mit dem dus geteset hast. habs mal ganz primitiv versucht und bei BUFSIZE=1 würde es mit 10 MB stunden dauern (naja vielleicht auch nicht
. aber ich würd mal sagen 10 min locker wenn nich noch viel mehr, habs irgendwann abgebrochen). wenn man die maximale puffergrösse nimmt (die funktion nimmt size_t also 1<<16) dann dauern sogar 40 MB nur 640 ms (!!!) glaub mir: zwischen 1 und 4096 liegen welten.
-
max. transferrate der festplatte: 60 MB/s (sei mal eine neue)
puffergroesse reads/s 1 60,000,000 1,024 58,594 4,096 14,648 1,6384 3,662
was frisst wohl mehr prozessorzeit? einige millionen wiederholungen oder nur ein einige tausend?
-
wolfi wendel schrieb:
aber ich würd mal sagen 10 min locker wenn nich noch viel mehr, habs irgendwann abgebrochen).
Also, ich hab schon ne lahme Gurke mit 550 MHz und da dauert das mit Puffergröße 1 ca 1,6 Sekunden.
zeig mal den code mit dem dus geteset hast.
#include <stdio.h> #include <time.h> #define LIESDIESEANZAHLZEICHENINDENOLLENPUFFERREINHEHEHE 4096 main() { clock_t start, stop; FILE* fp = fopen ( "test.txt", "r" ); char puffer[4096]; start = clock(); while( fread( puffer, LIESDIESEANZAHLZEICHENINDENOLLENPUFFERREINHEHEHE, sizeof(char), fp ) ) { // dreh däumchen++ } stop = clock(); printf( "%f", (double)(stop - start) / CLOCKS_PER_SEC ); }
Musste ich das glatt noch einmal testen und siehe da, ich muss wohl zum Augenarzt denn, auf einmal ist das mit 4096er Puffer viermal so schnell !
Ich hätte schwören können, letztes mal waren die Zeiten gleich !
Naja, wie auch immer, ich nehme das vom letzten mal zurück und behaupte das Gegenteil.
Gruß,
p.
-
sizeof(char) ist immer 1
dein #define ist ueberfluessig. benutze im fread() call stattdessen sizeof(puffer). natuerlich nur, so lange puffer ein array bleibt.
-
proggingmania schrieb:
zeig mal den code mit dem dus geteset hast.
hatte read und write verwendet, allerdings hat man da nur mehr mühe mit abfragen und deskriptoren wehalb ich auch auf fread()/fwrite() umgestiegen bin, also sieht der code in etwa so aus wie deiner, mit einem unterschied: zwischen die beiden zeitmessungen, also in der while-schleife, wird der buffer auch noch in eine andere datei geschrieben, was beim kopieren nicht fehlen sollte ;).
-
Hallo,
c.rackwitz schrieb:
sizeof(char) ist immer 1
Ja sorry, ich hab Bockmist gebaut, die Konstante und sizeof(char) ausversehen vertauscht.
-
proggingmania schrieb:
Hallo,
c.rackwitz schrieb:
sizeof(char) ist immer 1
Ja sorry, ich hab Bockmist gebaut, die Konstante und sizeof(char) ausversehen vertauscht.
Das kannst du aber laut sagen! Davon kriegt man ja Augenkrebs. Und von magic numbers würde ich dir auch abraten... nur für die Zukunft: In schönem und reinem Ansi C sieht das so aus:
#define SE_NUMBER_BEFORE_SE_TWO 1 ... fread( puffer, LIESDIESEANZAHLZEICHENINDENOLLENPUFFERREINHEHEHE, SE_NUMBER_BEFORE_SE_TWO, fp ) )
is doch eh viel praktischer
-
Se_Godfaser schrieb:
Und von magic numbers würde ich dir auch abraten.
Verstehe, also lieber:
#define ICH_KANN_NICHT_ZAUBERN 1
?
-
proggingmania schrieb:
Se_Godfaser schrieb:
Und von magic numbers würde ich dir auch abraten.
Verstehe, also lieber:
#define ICH_KANN_NICHT_ZAUBERN 1
?
Da hats einer verstanden... Sehr gut!