<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=white lang=EN-NZ link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Your probably
right. That makes sense.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>It’s certainly easier
to code than using static blocks and reusing them.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'><o:p> </o:p></span></p>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>
<p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
"Tahoma","sans-serif";color:windowtext'>From:</span></b><span lang=EN-US
style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>
delphi-bounces@delphi.org.nz [mailto:delphi-bounces@delphi.org.nz] <b>On Behalf
Of </b>Rohit Gupta<br>
<b>Sent:</b> Friday, 24 September 2010 12:48 PM<br>
<b>To:</b> NZ Borland Developers Group - Delphi List<br>
<b>Subject:</b> Re: [DUG] Memory allocation speed<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>I think that because your chunk size is constant, the memory
manager just returns previous blocks to you. So fragmentation does not
occur.<br>
<br>
On 24/09/2010 01:52, Ross Levis wrote: <o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Just wanted
some opinions on how bad a practice this is!</span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>I have written
a media player which uses a DLL to decode audio files.</span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>The DLL opens an
MP3 file for example, and sends back decoded raw audio, usually in chunks of
4608 bytes (~20ms), but could be a different size.</span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>I need to
buffer this audio data for around 5 seconds (1 MB).</span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Rather than
writing a complicated circular buffer which feeds in one end and is taken from
the other, I decided to simply allocate memory for each new chunk and store a
link from one memory location to the next. The oldest buffer is read and
memory released.</span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>So there is
roughly 1 new memory space being allocated and 1 being destroyed every 20ms or
so, with around 200 chunks being stored at any one time.</span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>I’m using D7
with the FastMM4 memory manager.</span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>It is working
very well with very little CPU usage at all, which I was surprised at.
I’ve always been under the impression that allocating memory is a slow process.</span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'> </span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;color:#1F497D'>Thoughts?</span><o:p></o:p></p>
<p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><br>
<br>
__________ Information from ESET NOD32 Antivirus, version of virus signature
database 5472 (20100923) __________<br>
<br>
The message was checked by ESET NOD32 Antivirus.<br>
<br>
<a href="http://www.eset.com">http://www.eset.com</a><br>
<br>
<o:p></o:p></span></p>
<pre><o:p> </o:p></pre><pre><o:p> </o:p></pre><pre>_______________________________________________<o:p></o:p></pre><pre>NZ Borland Developers Group - Delphi mailing list<o:p></o:p></pre><pre>Post: <a
href="mailto:delphi@delphi.org.nz">delphi@delphi.org.nz</a><o:p></o:p></pre><pre>Admin: <a
href="http://delphi.org.nz/mailman/listinfo/delphi">http://delphi.org.nz/mailman/listinfo/delphi</a><o:p></o:p></pre><pre>Unsubscribe: send an email to <a
href="mailto:delphi-request@delphi.org.nz">delphi-request@delphi.org.nz</a> with Subject: unsubscribe<o:p></o:p></pre><pre><o:p> </o:p></pre><pre><o:p> </o:p></pre><pre>__________ Information from ESET NOD32 Antivirus, version of virus signature database 5472 (20100923) __________<o:p></o:p></pre><pre><o:p> </o:p></pre><pre>The message was checked by ESET NOD32 Antivirus.<o:p></o:p></pre><pre><o:p> </o:p></pre><pre><a
href="http://www.eset.com">http://www.eset.com</a><o:p></o:p></pre><pre><o:p> </o:p></pre>
<p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:12.0pt;
font-family:"Times New Roman","serif"'><o:p> </o:p></span></p>
<div>
<p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>--
<br>
Regards<br>
<br>
<b>Rohit Gupta</b><br>
B.E. Elec., M.E., Mem IEEE, Member IET<br>
Technical Manager<br>
Computer Fanatics Ltd<br>
<br>
<b>Tel </b>4892280 <br>
<b>Fax </b>4892290 <br>
<b>Web </b>www.cfl.co.nz<o:p></o:p></span></p>
<div class=MsoNormal align=center style='text-align:center'><span
style='font-size:12.0pt;font-family:"Times New Roman","serif"'>
<hr size=3 width="100%" align=center>
</span></div>
<p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>This
email and any attachments contain information, which is confidential and may be
subject to legal privilege and copyright. If you are not the intended
recipient, you must not use, distribute or copy this email or attachments. If
you have received this in error, please notify us immediately by return email
and then delete this email and any attachments.<o:p></o:p></span></p>
</div>
</div>
</body>
</html>