[Mono-dev] Should we replace MemoryStream?

pablosantosluac at terra.es pablosantosluac at terra.es
Mon Nov 9 17:53:37 EST 2009


Hi,

I think a very important place were this chunked mem streams HAVE TO be
placed (in fact I'll be trying them tomorrow under heavy load on our
testing cluster) is in remoting: there's a huge number of mem streams
being created and destroyed (one for each call) and this can help...
only if the new ChunkedStream is based on a pool, which I don't think is
the case but probably could be easily doable.

What do you think about extending ChunkedMemoryStream to include an
option based on a chunk pool, so memory is actually reused instead of
freed and re-allocated? Wouldn't it be good to reduce fragmentation (I'm
still thinking on remoting)??


pablo


www.plasticscm.com



Steve Bjorg wrote:
> The implementation could be adapted so that if the chunked memory  
> stream is initialized with an existing byte array it behaves like it  
> did in the past.  It's possible that the best approached can be  
> derived for the various MemoryStream constructors.
> 
> The question is what is the most common usage pattern?  If it's  
> GetBuffer(), then there will be a performance and overhead hit.   
> However, if it's using Write()/Read() as we do, then there are some  
> significant gains to be had.  GetBytes() would also benefit, though  
> not as much.
> 
> - Steve
> 
> --------------
> Steve G. Bjorg
> http://mindtouch.com
> http://twitter.com/bjorg
> irc.freenode.net #mindtouch
> 
> On Nov 9, 2009, at 11:41 AM, Andreas Nahr wrote:
> 
>> Are you talking about System.IO.MemoryStream?
>> Then imho this would be a problematic move.
>> Most people are used to new MemoryStream (someByteArray) being O(0)  
>> time,
>> but with ChunkedStream would be O(n). In fact in those cases  
>> ChunkedStream
>> would need twice the memory because it would still need to retain the
>> original byte array (e.g. for GetBuffer).
>>
>> Happy hacking
>> Andreas
>>
>> -----Ursprüngliche Nachricht-----
>> Von: mono-devel-list-bounces at lists.ximian.com
>> [mailto:mono-devel-list-bounces at lists.ximian.com] Im Auftrag von  
>> Miguel de
>> Icaza
>> Gesendet: Montag, 9. November 2009 19:10
>> An: mono-devel-list
>> Betreff: [Mono-dev] Should we replace MemoryStream?
>>
>> Hello folks,
>>
>>    I just blogged about a memory fragmentation issue here:
>>
>> 	http://tirania.org/blog/archive/2009/Nov-09.html
>>
>>    And I am wondering: since MemoryStream is one of these sources of
>> problems, we could replace this implementation with MindTouch's
>> ChunkedStream.
>>
>> Miguel.
>>
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> 
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> 



More information about the Mono-devel-list mailing list