Kezdőoldal » Számítástechnika » Programozás » Fájlbeolvasásnál nem okoz...

Fájlbeolvasásnál nem okoz gondot ha a puffer túl nagyra van állítva? (Pascal)

Figyelt kérdés

Operációs rendszertől függetlenül működik (és jól működik) ha a puffer nagyra van állítva? Például akár több mint 100 megára, hiszen ha egy másodperc alatt be lehet olvasni akár 120 megát is, gondolom akkor ez a legpraktikusabb.

Ahhoz kelleme némi szakértelem hogy operációs rendszer szintjén menjen a fájlolvasás, tehát programból legyen lekezelve operációsrendszer-szintű hívásokkal a fájlolvasás.



2016. okt. 20. 19:02
1 2
 11/16 A kérdező kommentje:
Nézd meg a merevlemezek jellemzőit és rájössz, általában 64 MB-s pufferrel rendelkeznek (cache, gyorsítótár)
2016. okt. 20. 22:20
 12/16 ejbenjaro ***** válasza:
Pascalban nagyban meghatározza a fájl típusa, hogyan kezeled, illetve az, hogy mit akarsz vele csinálni. Különbséget szoktunk tenni szövegfájl és egyéb fájlok között, sőt ez utóbbiak lehetnek típusos fájlok, ahol az adatok meghatározott típusokkal kezelhetők, pl csak egész számokat tárolnak a fájlban (file of integer), de lehetnek típus nélküliek is, amikor nem csak egyféle adat van a fájlban. Tehát szövegfájlt nem feltétlenül érdemes bináris fájlként kezelni. Ha fájlt másolsz és puffert akarsz, akkor a blockread és blockwrite eljárásoknak nézz utána. Objektumorientált megközelítésben pedig a FileStreamnek érdemes utána nézni.
2016. okt. 21. 06:20
Hasznos számodra ez a válasz?
 13/16 anonim ***** válasza:

Hiába adsz meg 120 megás puffert, egy másik szinten azt úgysem biztos, hogy az oprendszer valóban bent is tartja a fizikai memóriában. (Valszeg igen, de nem biztos.) Annyi fog történni, hogy fájl olvasáskor azt feltölti, tehát annyival több adatot fog (esetleg feleslegesen) beolvasni, és közben még talán swap-elnie is kell, ha túlzsúfolt a memória. Akkor lehet némi értelme, ha a fájlban sűrűn ugrálsz előre-hátra, sűrűn használod egy teljes pufferméretnyi részét a fájlnak.


A lemez fizikai puffere pedig kicsit mást jelent. Az a memória arra jó, ha a beolvasandó adatok szektorsorrendben vannak a lemezen, ilyenkor a kért szektorok után következőket is beolvassa a lemez a saját pufferébe, hátha az fog kelleni legközelebb. Ezt viszont semmi nem garantálja. (Fájlrendszer működés, töredezettség, stb.)

2016. okt. 21. 19:21
Hasznos számodra ez a válasz?
 14/16 A kérdező kommentje:

Értem. blockread-nak és blockwrite-nek a 4096, de még a 8192 byte pufferméret is elmondhatatlanul lassúnak tűnik.

Van valami megoldás ami platformfüggetlen és megoldja e problémát?

2016. okt. 21. 19:50
 15/16 ejbenjaro ***** válasza:

"Van valami megoldás ami platformfüggetlen és megoldja e problémát?"

Nincs, mert probléma sincs ha megérted, hogy a lemezről olvasás, lemezre írás lassú. Az adatokkal való művelet lehet gyors, ha előtte a lemezről beolvasod memóriába az egész fájl tartalmát, ez kis fájloknál nem is gond, nagyobb fájlokhoz meg használj fájl és memória streamet. A lényeg, hogy minél kevesebbszer kelljen a lemezhez fordulni adatokért.

2016. okt. 22. 09:26
Hasznos számodra ez a válasz?
 16/16 anonim ***** válasza:

"a 4096, de még a 8192 byte pufferméret is elmondhatatlanul lassúnak tűnik"


A "lassúság" tevékenységfüggő, a puffer maga nem lehet lassú.

Szóval a kérdés az, hogy pontosan mit is csinálsz és milyen felépítésű (tartalmú) fájllal.

2016. okt. 22. 20:09
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!