I prefer the second, as it keeps things a bit more type-safe or at least type-consistent.
On 8/3/07, pablosantosluac <[EMAIL PROTECTED]> wrote: > Rafael, > > So, you basically mean changing the API from > > MyType[] GetData() > > to something like > > byte[] GetData() > > and perform the marshalling yourself? > > Or maybe something like > MyArrayType GetData() > > and then MyArrayType gets a customized serializer? > > Thanks! > > pablo > > > ----- Original Message ----- > From: "Rafael Teixeira" <[EMAIL PROTECTED]> > To: "Mirco Bauer" <[EMAIL PROTECTED]> > Cc: "pablosantosluac" <[EMAIL PROTECTED]>; > <mono-devel-list@lists.ximian.com> > Sent: Friday, August 03, 2007 4:21 PM > Subject: Re: [Mono-dev] Serialization performance + remoting > > > > Pablo, > > > > I should add that probably custom serialization should happen at the > > Array level, not each element, or you may end experiencing a similar > > problem with System.Runtime.Serialization.ObjectIDGenerator. > > > > If you know that all the array elements are different instances (no > > repeated references), it will be a huge gain, because that is > > something you don't have a way of letting the system provided > > serializer know, so it will keep trying to generate ids and check in > > the other end to point all references to a single deserialized > > instance. > > > > In those cases I normally serialize the whole array into a very > > compact and concise blob (forget the fields descriptors or send them > > just once) and deserialize at the other end. The added complexity is > > paid well in performance, for large sets of objects. > > > > In some cases I go even further and use compression/decompression of > > the blob, to achieve even less transport time, I just experiment a bit > > to find the right threshold (minimum size) where compression is > > beneficial (it is kind of a lookup table one have to construct, to > > adjust to the real speed of the connection). > > > > Hope it helps, > > > > On 8/3/07, Mirco Bauer <[EMAIL PROTECTED]> wrote: > >> On Thu, 2007-08-02 at 22:54 +0200, pablosantosluac wrote: > >> > Thanks Mirco, > >> > > >> > Well, all my objects are already marked as [Serializable] instead of > >> > extending the MarshalByRefObject. > >> > >> Ok, then you are passing the objects by value already. > >> > >> > > >> > So, you mean if I extend the class it will go worse? > >> > >> Yes :) > >> As it will only transfer a proxy object which will always make remoting > >> calls for each method or property usage. > >> So code like this is very bad: > >> for (int i = 0; i < 10; i++) { > >> Console.WriteLine(myRemoteObject.SomeProperty); > >> } > >> that will cause 10 remoting calls... > >> > >> > > >> > The sample I'm using returns the 4700 objects in a single call (an > >> > array is > >> > returned) > >> Hmmm ok, so you have performance problems with the binary serialization > >> itself, not with the remoting/call overhead. > >> > >> Then you might want to implement custom optimized binary serialization. > >> This can be done by implementing the serializable interface yourself. I > >> have not done this yet, but I will (for smuxi), as the built in binary > >> serialization of objects in MS .NET and Mono is pretty slow (actually > >> damn slow IMHO). The problem is that they are very generic > >> implementations to fit all cases, AFAIK. > >> > >> How to implement faster binary serialization check this out: > >> http://www.codeproject.com/csharp/FastSerialization.asp > >> > >> Maybe I will start a SmartBinarySerializer project :-P not sure... > >> As there is no free (as in MIT/X11, BSD, LGPL, whatever license) > >> implementation of an optimized binary serialization :( > >> > >> -- > >> Regards, > >> > >> Mirco 'meebey' Bauer > >> > >> PGP-Key: > >> http://keyserver.noreply.org/pks/lookup?op=get&search=0xEEF946C8 > >> > >> -----BEGIN GEEK CODE BLOCK----- > >> Version: 3.12 > >> GIT d s-:+ a-- C++ UL++++$ P L++$>+++$ E- W+++$ N o? K- w++>! O---- M- > >> V? PS > >> PE+ Y- PGP++ t 5+ X++ R tv+ b+ DI? D+ G>++ e h! r->++ y? > >> ------END GEEK CODE BLOCK------ > >> > >> _______________________________________________ > >> Mono-devel-list mailing list > >> Mono-devel-list@lists.ximian.com > >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > >> > >> > >> > > > > > > -- > > Rafael "Monoman" Teixeira > > --------------------------------------- > > "I myself am made entirely of flaws, stitched together with good > > intentions." > > Augusten Burroughs > > _______________________________________________ > Mono-devel-list mailing list > Mono-devel-list@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/mono-devel-list > -- Rafael "Monoman" Teixeira --------------------------------------- "I myself am made entirely of flaws, stitched together with good intentions." Augusten Burroughs _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list