- Nagyon is lát fantáziát a Socket AM4-ben az ASRock
- Analóg fényképezés
- Gaming notebook topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Véleményes teszt bizonygatja mennyit ér a Macbook Neo 8 GB RAM-ja
- Videós, mozgóképes topik
- Milyen egeret válasszak?
- ASUS notebook topic
- 3D nyomtatás
- Bluetooth hangszórók
Új hozzászólás Aktív témák
-
thon73
tag
Visszatérek egy korábbi beszélgetéshez, mert ígértem, hogy számot adok az eredményeimről (ezt egy rövid részben már megtettem). Bocs, egy kicsit hosszabb lesz, aki nem érdeklődik, ugorjon nyugodtan!

Másrészt kicsit Java topicba kívánkozik, de mivel a mérések célja az Android felderítése volt, (no meg itt kezdtünk bele), inkább itt folytattam.A probléma: indexelt utf-8 kódolású fileban ugrálni (seek) ide-oda, és rövid részeket beolvasni. Az első ötlet a Reader, a második ötlet a puffer használata volt. Mindkettő jó, de az alap osztályokkal nem megvalósítható.
fis = new FileInputStream( file ); // byte alapú beolvasás
isr = new InputStreamReader( fis, "UTF-8" ); // már karakteralapú, dekódolt és pufferelt (fix puffer)
br = new BufferedReader( isr ); // readLine is van, és még nagyobbra állítható pufferfis.getChannel().position(pos) segítségével seek megvalósítható. DE! Amíg van a pufferban elem, azt használja. A puffer nem törölhető, az available() sem implementált, amivel skippelni lehetne. Egy megoldást láttam: minden seek után újranyitni a file-t. További hátrány: a puffert teljes egészében dekódolja, ha kell, ha nem.
Megoldás: puffereléssel és utf8 dekódolással bővített Reader osztály (én valójában a RandomAccessFile-t használok a háttérben, de FileInputStream ugyanúgy jó. A "kimenet" azonban Reader lesz.) Ez már másnak is eszébe jutott ITT, én ezt az ötletet fejleszettem tovább.
A tesztben hátulról előre 100 byte-onként végzek lineRead()-et egy 3,8 megás, rövid sorokat tartalmazó szöveges file-ban. Az eredmények megdöbbentőek (sajnos eléggé szórnak) A nem-pufferelt (egyébként azonos osztály) 20000 ms körül teljesített. Ugyanez puffereléssel: 600-900 ms
Kimértem a különböző pufferméreteket is (ez a szórás miatt nehezebben meghatározható). DE! Az jól látszik, hogy 500 byte puffer alatt rosszabb a teljesítmény (800-1000 ms); 500-2000 byte között a legjobb (700-750 ms), 2000 felett pedig konstansan romlik (800-900 ms).
Ez utóbbi eredmények között lényegi különbség (szerintem) nincs, vagyis nincs értelme sokat változtatni a 8192 standard pufferméreten. (((A régi szép időkben ismert szektornyi "raw" readhez amúgy sem enged oda a rendszer)))
A pufferelt/nem pufferelt közötti különbséget sokkal kisebbnek gondoltam. Érdekes, hogy ennek ellenére nincs pufferelésre (gyári) lehetőség RandomAccessFile esetén. 20x különbség nagyon sok.Ha esetleg már valaki küzdött ezzel, és megosztaná a véleményét, nagyon örülnék.

Új hozzászólás Aktív témák
- BestBuy ruhás topik
- Megérkezett a Samsung Galaxy A37 és Galaxy A57
- Nagyon is lát fantáziát a Socket AM4-ben az ASRock
- Google Pixel topik
- Motoros topic
- Analóg fényképezés
- Gaming notebook topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Vigneau interaktív lokálblogja
- Véleményes teszt bizonygatja mennyit ér a Macbook Neo 8 GB RAM-ja
- További aktív témák...
- MSI H81M P33 LGA 1150 alaplap
- MAGYAR BILLENTYŰZETES LAPTOP BAZÁR BŐVíTÉS ALATT
- ZBook Fury 15 G8 15.6" FHD IPS i7-11800H T1200 32GB 512GB NVMe ujjlolv IR kam gar
- Samsung Galaxy A35 5G 6/128GB Újszerű,Kártyafüggetlen,Tartozékaival. 1 Év Garanciával!
- HP EliteBook 840 G10 14" i5 1335U, 16GB RAM, 512GB SSD, jó akku, számla, 6 hó gar
- Nothing Phone (1) / 8/256GB / Kártyafüggetlen / 12Hó Garancia /
- Gravity MS állvány + RØDE XDM-100 Mikrofon!
- Telefon felvásárlás!! Samsung Galaxy A20e/Samsung Galaxy A40/Samsung Galaxy A04s/Samsung Galaxy A03s
- LG 27GR93U-B - 27" IPS - UHD 4K - 144Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDR 400
- ÚJ HP EliteBook 6 G1a Ryzen 5 PRO 230 4.9GHz 16GB DDR5 512GB FHD+ 16:10 már jobbik kijelző, gar 2028
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



