- GoodSpeed: Megint 3 hónap Disney+ akciósan :)
- gban: Ingyen kellene, de tegnapra
- sellerbuyer: Te tudod, mi mennyit fogyaszt az otthonodban?
- Brogyi: CTEK akkumulátor töltő és másolatai
- Barthezz2: Cím: Ismeretlen - Chapter 4
- Magga: PLEX: multimédia az egész lakásban
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- GoodSpeed: Samsung 980 PRO 1TB versus 990 PRO 2TB M.2 SSD
- sh4d0w: Tele a hócipőm
Új hozzászólás Aktív témák
-
joysefke
veterán
válasz
pmonitor #9458 üzenetére
static unsafe void teszt_6(int[] source, int n)
{
int[] dest = new int[n];
fixed (int* pSource = source, pdest = dest)
{
int* pSource_0 = pSource;
int* pdest0 = pdest;
int* pmax = pSource_0 + n;
for (; pSource_0 < pmax; ++pSource_0, ++pdest0)
{
*pdest0 = *pSource_0;
}
}
}
mivel a metódusnak visszatérési értéke nincsen (void), a program végeredménye szempontjából lényeges mellékhatás sincsen (nincsen IO, nem változtat semmilyen állapotot) ezért ezért honnan tudod, hogy futás közben release + optimalizáció beállítással ez egyáltalán lefut? (valószínűleg lefut, de nem kéne)
Ráadásul a timert úgy indítod-állítod le, hogy a memóriamásoláson kívül szinte minden tesztesetedben van ciklikus heap allokáció is. Ha nagyot foglalsz a heapen akkor az triggerelhet egy GC futást is.
Mivel a teszt-metódusaidat ciklusban futtatod, az iterációk között teleszemeteled a heapet halott objektumokkal ezért FOG futni a GC, többször, sokszor. A GC futás valószínűleg több időbe kerül mint maga a memóriamásolás. (pld mert a memóriaterületeket valamikor nullázni is kell stb) . Innentől kezdve a méréseid pontatlanok.
Ha memóriát akarsz kézzel másolni, akkor #9455 szigorúan allokáció nélkül. az kimaxolja a mem sávszélt, az a másolás sebességének elméleti határa
====
Az egészet arra éleztem ki, hogy a "fő programom"(a cutter) esetében sokat kell tömböt másolni. Igaz, hogy csak kis méretűeket.
Csak másolni kell a tartalmat egyik helyről a másikra vagy allokálni kell és feltölteni? Elég jelentős a különbség. (nem ismerem a feladatot)
====
A legnagyobb meglepetést azonban az Unsafe kód okozta. Kis méretű tömb esetén a "középmezőnyben" van. Nagy méretű tömb esetén azonban lényegesen a leggyorsabban végez az összes többinél.
Két oka van:
1,
Az eredeti unsafe teszt-metódusodban nem volt for ciklusos heap allokáció hanem stackalloc volt => nincs GC a szemét eltakarítására, összehasonlíthatatlanul gyorsabb. Az összes többi teszt ahol new int[n] hívódik ciklikusan hatalmas handikeppel indult...
2,
Az unsafe kikapcsolja a tömb hozzáférések során az indexer értéktartomány ellenőrzését. ezzel csökkentetted a ciklusonkénti munkát (indexer értékhatár ellenőrzés + mem másolás helyett csak mem másolás). Gondolom a többi library metódus is unsafe-ként van belül megvalósítva. Csak ugye lsd 1. pont
Ú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!
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- AliExpress tapasztalatok
- Azonnali játékos kérdések órája
- Xbox Series X|S
- Merész dizájn és új teleobjektív az iPhone 17 Pro mobilokban
- PlayStation 5
- Telekom mobilszolgáltatások
- VR topik (Oculus Rift, stb.)
- Milyen okostelefont vegyek?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- További aktív témák...
- Nitro AN515 57 15.6" FHD IPS i7-11600H RTX 3070 32GB 512GB NVMe magyar vbill gar
- Egyedi matricák gyártása, akár kis mennyiségben is! Kattints a további infókért.
- Apple MacBook Pro 16" (2021) M1, 32GB RAM, 500GB SSD Csúcskategóriás erő, elérhető áron!
- HP 280 Pro G2 Sff üzleti gép i3/8GB/WIN11
- Üzleti Monitorok (Led, HD, FullHD)
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
- HIBÁTLAN iPhone XS 64GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS3030, 100% Akkumulátor
- MacBook Pro 13, 14, 15, 16, MacBook Air M1, M2 M3 M4 bill magyarosítás lézerrel / sapkacserével
- HP EliteBook 830 G7 i5-10210U 16GB 512GB 1 év garancia
- ÁRGARANCIA!Épített KomPhone i5 10400F 16/32GB RAM RX 7600 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest