Új hozzászólás Aktív témák
-
joysefke
veterán
válasz
DrojDtroll
#9337
üzenetére
public static int[,] Get4mIntArrBufferedSpan(string fileName){var sw = new Stopwatch();uint heigth = 2048;uint width = heigth;var result = new int[heigth, width];var buffSize = sizeof(ushort) * heigth;var buff = new byte[buffSize];using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None, bufferSize: 1024 * 1024)){sw.Start();for (int w = 0; w < width; w++){int chunk = 0;while (chunk < buffSize)chunk += fs.Read(buff, chunk, (int)buffSize - chunk);var shortArr = MemoryMarshal.Cast<byte, ushort>(buff);for (int h = 0; h < heigth; h++)result[h, w] = shortArr[h];}sw.Stop();Console.WriteLine($"{nameof(Get4mIntArrBufferedSpan)} took {sw.ElapsedMilliseconds}ms");}return result;}Nekem a fenti kód pontosan ugyanazt az eredmény tömböt dobja ki mint a te első metódusod. A különbség annyi, hogy a itt while ciklus megpróbál egyszerre 4096byteot (2048db ushort) kiolvasni a streamből, a kiolvasott byte tömböt castolja ushort-tömbre azzal pedig feltölti egy oszlopodat.
Szóval itt is rossz a tömb bejárási sorrendje, de a Stream.Read() metódus úgy tűnik, hogy ennyivel hatékonyabb, mint egyenként ushortokat olvasgatni. (nálam pontosan duplázódott a sebesség)
A fenti kódban ha a mátrix bejárási sorrendje "normalizálódna" akkor további 3x lenne gyorsabb. ==> tehát igen, itt a processzor fogja vissza a fájlműveletet

Ebben az esetben lenne értelme egyszerre 2048db elemnél többet is olvasni. Az még dobna rajta.
Ú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!
- HP Elitebook 850 - i5 proci / 16gb memória/ 500gb m2 SSD
- Gamer PC - R7 3800X, RTX 3060ti és 16gb RAM + GARANCIA
- SAMSUNG (LS43FM700UUXUF) 4K GAMER SAMART MONITOR! 2025 MODELL! AKCIÓ
- MSI Cubi NUC 1M Intel Core 7 150U 16GB DDR5 512 NVMe SSD 2x2.5GBE LAN Wifi 7 Win 11 Pro garancia
- iPhone 16 Pro Max 256GB Natural Titanium 2028.-ig Garancia 100% akku
- magyar billentyűzet - 165 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080
- ÁRGARANCIA!Épített KomPhone i5 12400F 16/32/64GB RAM RX 9060 XT 8GB GAMER PC termékbeszámítással
- 152 - Lenovo LOQ (15IRH8) - Intel Core i5-12450H, RTX 4060
- Csere-Beszámítás! Lemezes Playstation 5 Slim konzol!
- ÁRGARANCIA! Épített KomPhone i5 12400F 16/32/64GB RAM RTX 5050 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


