Új hozzászólás Aktív témák
-
válasz pmonitor #9454 üzenetére
Nem derül ki, hogy mit akarsz csinálni. És mi alapján választottad ki a bementő paramétereket.
static unsafe void teszt_5(int[] source, int n)
{
fixed (int* pSource = source)
{
int* dest = stackalloc int[n];
int* pSource_0 = pSource;
int* pmax = pSource_0 + n;
for (; pSource_0 < pmax; ++pSource_0, ++dest)
{
*dest = *pSource_0;
}
}
}
(1)
bemegy egy tömb és egy int.(2)A stacken foglalsz egy int tömböt
-ami nem tudja elhagyni a stacket
-és nem lehet nagyobb mint a stack mérete (ráadásul a stackből foglalja a helyet aminek a metódus hívásakor már van egy a metódus számára ismeretlen mérete illetve a default stackméret futtatókörnyezettől is függ)(3)aztán feltöltöd az int[n] tömböt és
(4)elfelejtedHa kézzel írnék tömbmásolásra egy UNSAFE metódust akkor bemenetként a már lefoglalt cél és forrástömb referenciáit vinném be aztán SIMD-del 32 byteonként másolnék (AVX register mérete).
Amit te csinálsz ott egy int* pointert inkrementálsz és int méretben történik az adatmozgatás. (a mivel a ciklusok nem függenek az előzőektől ezért jó esetben 3-4 átlapolva történik meg)
SIMD-del egyedül a memória sávszélessége szabna határt
[ Szerkesztve ]
Ú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!
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- AMD GPU-k jövője - amit tudni vélünk
- Könyvajánló
- Székesfehérvár és környéke adok-veszek-beszélgetek
- NBA és kosárlabda topic
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- PlayStation 5
- Épített vízhűtés (nem kompakt) topic
- Okos Otthon / Smart Home
- antikomcsi: Való Világ: A piszkos 12 - VV12 - Való Világ 12
- További aktív témák...