Due to unforseen circumstances, I don't have the time currently to write an article or detailed instructions for using the current fast serialization code I have. Or even to merge it in to the latest released version.
What I have created though is a ZIP file containing the current code and a copy of the original file/template from which they were created where there was one.
Frans is planning to incorporate a version of this code in v2.1 and so it will eventually be converted for all the other flavours/combinations but I only have NET2.0/C#/Adapter code.
This should be enough to allow anyone who is keen enough to diff the original/new files and work out what I have changed/added (mainly added to no backwards compatibility problems) and incorporate them into a copy of any LLBLGen Runtime source library and compile.
Notes:
To switch on Fast Serialization, you just need to set
SerializationHelper.Optimization = SerializationOptimization.Fast
early at startup time.
By default, ObjectIDs are not preserved during through the serialization/deserialization cycle - any inter-entity references will automatically generate a new ID as required. This saves around 15% in size.
However, if you need to preserve the ObjectIDs to be able to match them back to existing entities, just set
SerializationHelper.PreserveObjectIDs = true
I have just added a minimally tested option for byte compression. By setting SerializationHelper.Compressor = new XXX() where XXX supports IByteCompressor or IMemoryStreamByteCompressor, the fast serializer/deserializer will compress/decompress the serialized data at the appropriate time.
By using an interface to support compression, you can plug in any compression utility external to the LLBLGen runtime library.
It should be easy to incorporate .NET 2.0s compression tools but I just haven't got round to it yet so I have included MiniLZO.cs as a sample but be aware that the majority of this code is not mine and is bound by the GNU General public Licence v2. Also it is 'unsafe' code for speed.
Please be aware that the code I have will be passed to Solutions Design at some point and so what is eventually included in v2.1 may be completely different to the attached code.
Cheers
Simon