- Légy kocka: ellesi a Huawei és az Oppo az iPhone 17 szelfitrükkjét
- Több könyvet passzolna el a Samsung, mint kagylót
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Samsung Galaxy S23 Ultra - non plus ultra
- Xiaomi 15 - kicsi telefon nagy energiával
- iPhone topik
- Yettel topik
- One mobilszolgáltatások
- Amazfit Bip 6 - jót olcsón
- VoLTE/VoWiFi
Új hozzászólás Aktív témák
-
joysefke
veterán
válasz
DrojDtroll
#9331
üzenetére
for (int i = 0; i < heigth; i++){for (int j = 0; j < width; j++){result[j, i] = reader.ReadUInt16();}}Itt van még egy olyan probléma (mindkét példádban), hogy úgy iterálsz át egy nagy többdimenziós tömbön, hogy a belső ciklusod nem a tömb legjobboldalibb dimenzióján iterál.
C#-ban a többdimenziós tömbök (A[,,,]) row-major ként vannak a memóriában, tehát a legjobb oldalibb dimenzió egymás melletti elemei a memóriában egymás mellett lesznek. az A[100, 50] elem mellett az A[100,51] elem van. Ezzel szemben az A[101,50] az teljesen máshol van, a te esetedben (2048) elemmel később mint az A[100,50], tehát mivel int tömbről van szó, 8KB-tal később van. Az hogy itt csak írsz és nem olvasol kb mindegy, mert nyilván egy egész cache line lesz írva/olvasva.
A helyzeten cache-line szempontből még (valószínűleg) tovább ront itt, hogy kettő hatványonként iterálsz. ilyen problémák nagy mátrixok szorzásánál vannak
-
joysefke
veterán
válasz
DrojDtroll
#9331
üzenetére
Nincs időm kipróbálni, de nekem egyáltalán nem szimpatikus egy ilyen nagy fájlnak a mini adagokban való szekvenciális olvasgatása.
1, Miért nem a sima stream Read metódussal olvasol azonnal byte[] tömbbe?
2, Én megpróbálnám a bufferméreteket manuálisan feljebb húzni. Alapból csak valami ici-pici bufferekkel dolgozik. (nekem pár 10KB rémlik)
3, Nem mintha itt számítania kellene de te itt ugye 4M elemen iterálsz át egy szoros for () ciklusban => ha nem fájlműveletet végeznél, akkor már ez is bizonyos helyzetekben indokolatlanul lassú (4M tömbhatár ellenőrzés az indexerekre+ ellenőrzés az iterátoron, szerk: mondjuk 4M az még nem túl sok..)
(4, miért int tömbben-ben tárolod a short értékeidet?)5, a két kód ránézésre nem ugyanazt csinálja. a második konkrétan elcseszettnek tűnik.
64bitenként olvasol és ugyanúgy 4M-szor mint amikor 16 bitenként olvastál????
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Napelem
- Építő/felújító topik
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- Légy kocka: ellesi a Huawei és az Oppo az iPhone 17 szelfitrükkjét
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- PLC programozás
- Apple asztali gépek
- TCL LCD és LED TV-k
- Több könyvet passzolna el a Samsung, mint kagylót
- Linux Mint
- További aktív témák...
- ÚJ! 32GB (2x16GB) Kingston DDR5 5600MT/s RAM készlet Bontatlan
- 2 TB-os Kingston NV3 M.2 SSD - 6000 MB/s olvasás
- Apple MacBook Air 15" 2025 100%(1év Garancia)
- iKing.Hu - OnePlus 15 12/256GB használt, karcmentes 6 hónap garancia
- iPhone 17 Pro 256 GB - Bontatlan !! www.stylebolt.hu - Apple eszközök - Számlás
Állásajánlatok
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Cég: Laptopműhely Bt.
Város: Budapest


