Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7423[/thread]

print DATEI-> Verständnis (Seite 2)



<< |< 1 2 >| >> 18 Einträge, 2 Seiten
master
 2005-11-03 12:18
#59622 #59622
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Danke :-)

Dubu:
Am Ende werden die Dateien jedoch ca. 5-10 MB (minimale Grösse) und nicht ganze 100MB sein.. denkst du 5-10 MB reichen auch? viel grösser will ich sie nicht machen, wegen performance.. höchstens 20MB.
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
master
 2005-11-03 12:47
#59623 #59623
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Weitere Frage:

Wenn ich die Datei z.b. Mit O_TRUNC auf 0 Bytes setzt ohne Sie zu löschen.

Bleibt sie dann erhalten? oder löscht das system trotzdem?

Zudem angenommen ich schreibe in meine Datei
folgende daten pro print:
"000101010111101"

Werden alle Daten einer Datei als zusammengehörende Einheit aneinander gespeichert? oder Zerstückelt das FS die daten
z. B. in:
00010101 -> kommt auf adresse 1
0111101 -> kommt auf adresse 100 (statt 2)
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
pq
 2005-11-03 13:21
#59624 #59624
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=master,03.11.2005, 08:43]
Code: (dl )
1
2
3
    open(RAUS, ">$_[0]") or die $!;
   print RAUS $_[2];
   close(RAUS);


Wann wird definitiv in die Datei geschrieben?[/quote]
schon beim open wird die datei komplett geleert, wegen open ... >
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
vayu
 2005-11-03 14:04
#59625 #59625
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
[quote=master,03.11.2005, 11:47]
Zudem angenommen ich schreibe in meine Datei
folgende daten pro print:
"000101010111101"

Werden alle Daten einer Datei als zusammengehörende Einheit aneinander gespeichert? oder Zerstückelt das FS die daten
z. B. in:
00010101 -> kommt auf adresse 1
0111101 -> kommt auf adresse 100 (statt 2)[/quote]
also an sich sollte die datei wenn du sie komplett neu öffnest an eine genügend grosse speicherstelle geschrieben werden NACH dem close():

wenn du eine bestehende Datei öffnest und nur Daten dranhängst, kann es vorkommen, dass halt am ende nicht genug platz ist und der rest der Datei an eine andere Stelle abgelegt wird.

ODER er nimmt die Datei komplett von ihrer alten position und legt sie an einer neuen ab wo genügend Platz ist. Kommt halt drauf an wie Micorsoft das vorgesehen hat :) Ich würde aber schätzen, dass ersteres der Fall ist.\n\n

<!--EDIT|vayu|1131019783-->
Dubu
 2005-11-03 14:15
#59626 #59626
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=master,03.11.2005, 11:18]
Am Ende werden die Dateien jedoch ca. 5-10 MB (minimale Grösse) und nicht ganze 100MB sein.. denkst du 5-10 MB reichen auch?
[/quote]
Wie schon gesagt: Ich habe keine Ahnung, wie NTFS intern arbeitet. Noch viel weniger Ahnung, als ich von ext3 oder reiserfs habe, die ich wenigstens benutze. ;)
Wenn NTFS z.B. nur ein Journaling der Metadaten macht, dann hast du ueberhaupt kein Problem mit den Dateiinhalten, da diese dann "sofort" geschrieben werden (unberuecksichtigt der Pufferung durch den Festplattencache, heutzutage ca. 2-8 MB).

Quote
viel grösser will ich sie nicht machen, wegen performance.. höchstens 20MB.

Nebenfrage: Inwiefern bedeuten groessere Dateien schlechtere Performance?

Quote
Wenn ich die Datei z.b. Mit O_TRUNC auf 0 Bytes setzt ohne Sie zu löschen.
Bleibt sie dann erhalten? oder löscht das system trotzdem?

"Loeschen" einer Datei heisst grundsaetzlich, dass der von der Datei benutzte Plattenplatz als leer markiert wird. Mehr nicht. Und natuerlich kann es Dateien mit einer Laenge 0 geben. Fuer diese muss dann gar kein Plattenplatz reserviert werden, ausser natuerlich den Platz fuer den Verzeichniseintrag.

Quote
Zudem angenommen ich schreibe in meine Datei
folgende daten pro print:
"000101010111101"

Werden alle Daten einer Datei als zusammengehörende Einheit aneinander gespeichert? oder Zerstückelt das FS die daten
z. B. in:
00010101   -> kommt auf adresse 1
0111101    -> kommt auf adresse 100 (statt 2)

Bei allen heute gebraeuchlichen Dateisysteme ist es moeglich, dass eine Datei auf der Platte "zerstueckelt" wird (Stichwort: Fragmentierung). Es waere einfach viel zu ineffizient, Plattenplatz zu verschwenden, weil dort eine Datei nicht mehr "komplett" hinpasst, oder permanent die Dateien auf der Platte umzusortieren, um freie Bereiche zu schaffen.

Diese "zerstueckelten" Dateien muessen im Zugriff noch nicht mal so viel weniger effizient sein als linear angelegte Dateien: reiserfs z.B. legt die Clusterinformationen einer Datei in einem Baum ab und ist damit in vielen Faellen schneller als Dateisysteme, die mit linearen Listen arbeiten, aber diese bei grossen Dateien immer wieder verlaengern muessen. Auch kann reiserfs einen einzelnen Cluster fuer mehrere Dateien nutzen, wenn diese kleiner als die Clustergroesse sind. Das vermindert bei vielen kleinen Dateien den sonst auftretenden "Verschnitt" auf dem Dateisystem enorm. Aber das ist hier nun wirklich off-topic. ;)
vayu
 2005-11-03 14:32
#59627 #59627
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
lies dir das hier durch, dann weisst du bescheid :D

http://wwwdvs.informatik.uni-kl.de/courses....alf.pdf
master
 2005-11-03 14:32
#59628 #59628
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
werden, wenn ich die datei(exakt) überschreibe, die gleichen speicheradressen trotz fragmentierung überschrieben?

---
grosse Dateien = problematik bei meiner löschroutine..
ich kann ja nicht jede 10KB datei mit 100MB löschen bzw. überschreiben...

meine löschroutine funtkioniert so, dass z.b. eine 10KB überschrieben wird mit ca. 10 MB (schnell) dadurch wird zusätlich der freie festplatten speicher etwas "gesäubert"

Würde ich das mit 100MB machen ginge es 3 min für jede 10KB grosse Datei... das wär wohl zuviel für die Anwender...
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
vayu
 2005-11-03 15:23
#59629 #59629
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
wieso liest du nicht die dateigrösse der zu löschende Datei aus und überschreibst sie in einer schleife dann genau? ok dauert wohl auch ein wenig, aber bei kleineren dateien, sollte es doch erheblich schneller gehen.

ODER du baust dir ein paar kleine Datenblöcke zusammen, für verschieden grosse dateien.
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2005-11-03 09:43.