Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

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

philipg
2 antwoorden
  • 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
  • Hoi,

    Heeft werkelijk niemand een tip of een link naar een forum waar ze mij wel een antwoord kunnen geven?

    Groet,

    Philip

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.