memory allocation performance

S

semedao

Hi,
I have some loop that should copy X amount of bytes to some byte[] buffer.
the byte buffer array is fixed length during the loop
but outside the loop the length can change.
the loop can be called also inside other loop...
If I have this code for example when
What will be better performance , to check for buffer length before
re-allocate it , or to re-allocate it every time?
what coast more? the Length property + if , or the allocating ? (if we speak
about 10-100 bytes memory , and that the call change it every 10 times)

fooA()
{
do
{
fooB(***some value that can change every call***);
}
}

fooB(int CurrentLength){
if(_buffer.Length != CurrentLength)
{
_buffer = new byte[CurrentLength];

}

do

{

_buffer = ....data....

}

}
 
W

Walter Wang [MSFT]

Hi,

Comparing two int32 values will be much faster than re-allocating a byte
array. If possible, you should avoid re-allocating the buffer in a loop.

Taking StringBuilder for example, it's internally allocating a bigger
enough buffer to hold possible strings that will be appended to it. When
the buffer is not big enough, it will re-allocate a bigger buffer again
(probably double the buffer size), the purpose it to minimize possible
memory re-allocating times. That's why we always recommend to use
StringBuilder if you're repeatedly add strings up.


Sincerely,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications. If you are using Outlook Express, please make sure you clear the
check box "Tools/Options/Read: Get 300 headers at a time" to see your reply
promptly.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top