Ú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!
- Xiaomi 13 - felnőni nehéz
- exHWSW - Értünk mindenhez IS
- Google Pixel topik
- Otthoni hálózat és internet megosztás
- Projektor topic
- Windows 10
- Luck Dragon: Asszociációs játék. :)
- BestBuy topik
- Ha Kínában repülsz, és nem ilyen a hordozható töltőd, elveszik a reptéren!
- Xbox Series X|S
- További aktív témák...
- Honor Magic V2 5G 512GB / 16GB fekete
- Dell Precision M4700 laptop (i7, 16gb, 256 SSD, Quadro K2000M)
- Unifi UACC-CM-RJ45-MG SFP+ RJ45 10G adapter eladó, majd 2 év garanciával
- ASUS TUF F15 extra hardverekkel - i5 11400H, RTX 3050Ti, FHD 144Hz, 1,5TB SSD, 16GB RAM
- HTC Vive Pro 2 teljes prémium VR szett Valve INDEXEL, garanciális, sok extrával!
- ÚJ AKKU! Ár/ÉRTÉK BAJNOK! Dell Latitude 5330 i3-1215U 6mag! 16GB 512GB 13.3" FHD 1 év gar
- 14" Dell Latitude laptopok: 5400, 5480, 5490, 7480, E6410, E6440, E5450 / SZÁMLA + GARANCIA
- CORSAIR K100 AIR
- Lenovo ThinkPad X13 Gen 2 i5-1145G7 16GB 512GB FHD+ Érintőkijelző 100% sRGB - 1 év garancia
- Lenovo ThinkPad P1 Gen2 intel i7-9850H 32GB RAM 1000GB SSD 15,6" 4K OLED TOUCH 1 év garancia
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest