memmove() v C#?   zodpovězená otázka

C#, C++/C

Dobrý den,

mám následující otázku. Je v c# (.net) nějaká fce, která by fungovala obdobně jako memmove() v C (string.h)?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Platforma .NET je managed kód a žádné podobné low-level věci tam nejsou, protože nejsou potřeba. Co konkrétně potřebujete udělat?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

potřebuji fci, které předám ukazatel na některé místo v poli a počet bajtů, které chci přesunout na jiné místo v paměti (poli). Jednoduše chci posunout blok paměti z místa A do místa B (tak jak to dělá memmove). Hlavní je rychlost, algoritmus ve kterém to chci použít musí být velice rychlý, zpracovává velké množství dat (konkrétně EKG vzorkovací frekvence 1000Hz, délka záznamu muže být až několik hodin)

Pro představu jednoduchá ilustrace:

   static unsafe void Main(string[] args)
        {
            int[] qrsbuf = new int[8];
            int byteNumber = 3;
            fixed (int* qrsbufPointerStart = &qrsbuf[0])
            {
                fixed (int* qrsbufPointerEnd = &qrsbuf[1]){
         memmove(qrsbufPointerEnd, qrsbufPointerStart,bitNumber);
                }
            }
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro tak primitivní věc použijte Buffer.BlockCopy nebo Marshall.Copy, oboje je dostatečně rychlé.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za radu, ani jednu fci. kterou jste popsal, jsem neznal. Co jsem koukal do dokumentace, tak to vypadá, že Buffer.BlockCopy je opravdu rychlá. Už se těším až porovnám rychlost C# s řešením v C.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V C to bude samozřejmě rychlejší, jde jen o to jak moc.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback