Ga naar inhoud

Hoe toegang tot geheugen (buffer) te optimaliseren (C++)?


Aanbevolen berichten

Hallo, Ik heb een probleem welke eenvoudig lijkt, maar in de praktijk toch best lastig blijkt te zijn. Ik werk aan een applicatie waarin het nodig is om audio te bufferen. Voor dat doel heb ik een (1) lineair geheugenblok gereserveerd waarin bijvoorbeeld 10 audioframes worden opgeslagen, dus als volgt: frame0|frame1|...|frame9 =>1 geheugenblok! Ik gebruik een eenvoudige teller om naar de verschillende geheugenlocaties te refereren. Echter: als ik het aantal gebufferde frames verhoog (bijvoorbeeld naar 100), dan knalt de performance van mijn programma vrij heftig in elkaar, terwijl er beslist genoeg intern geheugen beschikbaar is (1 frame heeft 16384 bytes nodig, dus voor de 10 frames 183840 bytes; niet echt veel). Als ik de buffer verhoog van 10 naar 100 frames, dan heb ik slechts 1.8 MB intern geheugen nodig. Een hoeveelheid die makkelijk gereserveerd en gebruikt kan worden, dus waarom knalt de performance van het systeem zo in elkaar? Mijn vraag is: kan een andere manier van geheugen reserveren het performanceprobleem oplossen: i.p.v.een lineair stuk geheugen te reserveren (*buffer) het via **buffer te doen? En zo ja, waarom (daar gaat het mij feitelijk om)? En hoe reserveer je een **buffer in een *structure (de structure moet door het hele programma heen beschikbaar zijn (ook schrijven!), vandaar dat ik daarvoor ook een pointer gebruik)? Alvast bedankt! Philip
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...