- TCL LCD és LED TV-k
- Milyen alaplapot vegyek?
- Autós töltők 2025: tényleg megvan a 200 W?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Milyen billentyűzetet vegyek?
- BIOS frissítés
- Samsung Galaxy Tab S11 - tizenegyes
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Amlogic S905, S912 processzoros készülékek
- VR topik (Oculus Rift, stb.)
Ú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 -
pmonitor
aktív tag
válasz
pmonitor #9458 üzenetére
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. És ezt rekurzívan kell tenni(ismétléses permutáció generálásához). A Win api CopyMemory() esetén lényegesen gyorsabb lett az ismétléses permutáció generálása(a rekurzív hívásokban lévő tömb másolások gyorsulása miatt.) .
Ú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!
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Újjászületés: szombattól új szerverkörnyezetben a PROHARDVER! lapcsalád
- Asustor NAS
- Luck Dragon: Asszociációs játék. :)
- Torrent meghívó kunyeráló
- Poco F7 – bajnokesélyes
- Anime filmek és sorozatok
- sziku69: Szólánc.
- TCL LCD és LED TV-k
- Így tör borsot a Samsung az Apple Vision Pro orra alá
- További aktív témák...
- 2019 MacBook Pro 16" i9 Radeon Pro 5500M 4gb 32gb RAM 1TB SSD eladó!
- Újszerű HP 14s-dq5001nh - 14"FHD IPS - i5-1235U - 16GB - 512GB - Win11 - Magyar - Garancia
- PCLab Gamer G-386 Ryzen 5 5600 / 32GB RAM / RTX 5060 - profi összeszerelés gamerekre hangolva
- Samsung Galaxy S24 Ultra 512 GB (Ezüst) Prémium ajándékcsomaggal Típusváltás miatt eladó
- Ghost of Yotei + előrendelői kód
- Akció! Sérült! Corsair Icue 5000X RGB Számítógépház! Olvass leírást!
- HIBÁTLAN iPhone 13 Pro 128GB Sierra Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3667 100% Akkumulátor
- HIBÁTLAN iPhone 13 256GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS3735, 91% Akkumulátor
- OLCSÓBB 10.13.! Dell Latitude Precision XPS Üzleti gépek, 2-in-1 gépek, Vostro 8-12. gen.
- 156 - Lenovo LOQ (15IRH8) - Intel Core i5-13505H, RTX 4060
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő