HD-Zugriffe unter NT/2K/XP zu langsam? (war: Wie kann ich das noch lösen)
-
Hi Leute,
ich hab ein Programm geschrieben das die Festplatte mit Datenmuell füllt, damit nur noch ca 2 GB frei sind.
Mein Probleme sind:
1. ich bin noch ein ziehmlicher anfänger in c /c++ und erst recht mit den bcb
2. unter win98 sind 5x 2GB Dateien < 2 sec erstellt aber unter Win NT/ WinXP und wahrscheinlich auch unter win2k schreibt er gerade mal 4 MB'sFrage:
gibt es eine Möglichkeit mein Programm auch unter den Nt schneller zu bekommen (wie win 98)hier der Code (bitte nicht drüber herziehen)
über Verbesserungs-Vorschläge würde ich mich sehr freuen (man kann ja nur zulernen ;))#include <stdio.h> #include <dir.h> #include <ctype.h> TSearchRec SearchRec; //Konstanten __int64 GB = 2147483648; // __int64 GB = 100000000; __int64 FREEDISKSPACE; __int64 REST; short countOO; short Platte = 3; char LWB; char Dateiname[30]; char Verz[30]; char EXT[4]=".AX"; char a[3] = ""; short i=1; char DateinameTemp[30]; // void __fastcall TForm1::Button1Click(TObject *Sender) { Screen->Cursor = crHourGlass; FREEDISKSPACE = DiskFree(Platte); if (FREEDISKSPACE > GB) { if (!DirectoryExists(Verz)) { if (!CreateDir(Verz)) throw Exception("Kann das Verzeichnis '00Muell' nicht erstellen..."); } i=1; countOO = (FREEDISKSPACE-GB) / GB; REST = FREEDISKSPACE % GB; FILE *zeiger; if (countOO > 0) { for (i;i <= countOO;i++) { Application->ProcessMessages(); Form1->Repaint(); itoa(i,a,10); strcpy (DateinameTemp, Dateiname); strcat(DateinameTemp,a); strcat(DateinameTemp,EXT); if((zeiger = fopen(DateinameTemp, "wb")) == NULL) { StatusBar1->SimpleText = "Datei kann nicht erstellt werden..."; } else { fseek(zeiger,GB-1,0); fwrite("1", 1, 1, zeiger); fclose(zeiger); StatusBar1->SimpleText = "Datei erstellt"; }; }; }; if (REST > 0) { itoa(i,a,10); strcpy (DateinameTemp,+ Dateiname); strcat(DateinameTemp,a); strcat(DateinameTemp,EXT); if ((zeiger = fopen(DateinameTemp, "wb")) == NULL) { StatusBar1->SimpleText = "Datei kann nicht erstellt werden..."; } else { fseek(zeiger,REST-1,0); fwrite("1", 1, 1, zeiger); fclose(zeiger); StatusBar1->SimpleText = "Datei erstellt"; }; } } else { bool jppie = true; i=0; do { Application->ProcessMessages(); Form1->Repaint(); i++; itoa(i,a,10); strcpy (DateinameTemp,Dateiname); strcat(DateinameTemp,a); strcat(DateinameTemp,EXT); if (FindFirst(DateinameTemp, faAnyFile, SearchRec)== NULL) { if (DeleteFile(DateinameTemp)) { StatusBar1->SimpleText = "Datei gelöscht..."; } else { StatusBar1->SimpleText = "Datei kann nicht gelöscht werden..."; }; } else { jppie = false; }; }while(jppie); }; Screen->Cursor = crHourGlass; } //---------------------------------------------------------------------------
schön dank für eure Zeit!!!
mfg Andy
Edit:
Bitte aussagekräftige Überschriften wählen. Danke![ Dieser Beitrag wurde am 27.06.2003 um 02:23 Uhr von Jansen editiert. ]
-
Keine Ahnung, was 9x da macht, auf die Festplatte schreibt es aber mit Sicherheit nicht. Aktuelle IDE-Festplatten haben eine theoretische maximale Übertragungsgeschwindigkeit von 133MB/s, von 2GB/s sind wir also noch ein schönes Stück entfernt.
-
Naja er schreibt ja nicht auf der Platte!
Er setzt ja nur den Zeiger auf 2 GB - 1 Byte und schreiben tut er ja nur das letzte Byte und dann schließt er wieder die Datei.das setzen des Zeigers und das schreiben dieses Bytes geht unter win Nt auch schnell aber beim fclose(); brauch er lange!!
Ich hab es mal getestet ohne fclose(); : er rattert durch und erstellt alle dateien. dann hab ich das programm geschlossen und win Nt hat denn selbstständig die datei in ca 4MB's wachsen lassen.Ich kann mir gut vorstellen das es bei win Nt mit sicherheits vorkehrungen zu tun hat. weil wenn ich mir so die erstellten Dateien unter win 98 angucke, steht da ganz schöner kauderwelsch(zum Teil Inhalte von anderen Dateien) drin.
Aber wie kann ich mein Problem noch lösen?
Gibts da vielleicht schon andere lösungen?
-
Hallo,
Das hängt wohl weniger vom Betriebssystem als vom Filesystem ab. Hast du auf NT deine Partition mit NTFS formatiert? Das ist bekanntermassen (Rechteeinstellungen etc.) langsamer als FAT.
Ciao
-
der Nt Rechner hat als dateisystem ntfs
mein WinXP/Win98 Rechner hat Fat32 --- wenn ich win 98 boote ist das prog schnell wenn ich winXP boote ***** langsam. Beide greifen auf die selbe Festplatte, auf die selbe Partition zu.
also können wir nich ntfs schuld geben oder?