SerializationWriterWriteOptimized Method |
Name | Description | |
---|---|---|
WriteOptimized(Boolean) |
Writes an optimized Boolean[] into the stream using the fewest possible bytes.
Notes:
A null or empty array will take 1 byte.
Stored as a BitArray.
| |
WriteOptimized(ArrayList) |
Writes an non-null ArrayList into the stream using the fewest number of bytes possible.
Stored Size: 1 byte upwards depending on data content
Notes:
An empty ArrayList takes 1 byte.
| |
WriteOptimized(BitArray) |
Writes a BitArray into the stream using the fewest number of bytes possible.
Stored Size: 1 byte upwards depending on data content
Notes:
An empty BitArray takes 1 byte.
| |
WriteOptimized(BitVector32) |
Writes a BitVector32 into the stream using the fewest number of bytes possible.
Stored Size: 1 to 4 bytes. (.Net is 4 bytes)
1 to 7 bits takes 1 byte
8 to 14 bits takes 2 bytes
15 to 21 bits takes 3 bytes
22 to 28 bits takes 4 bytes
-------------------------------------------------------------------
29 to 32 bits takes 5 bytes - use Write(BitVector32) method instead
Try to order the BitVector32 masks so that the highest bits are least-likely
to be set.
| |
WriteOptimized(DateTime) |
Writes a DateTime value into the stream using the fewest number of bytes possible.
Stored Size: 3 bytes to 7 bytes (.Net is 8 bytes)
Notes:
A DateTime containing only a date takes 3 bytes
(except a .NET 2.0 Date with a specified DateTimeKind which will take a minimum
of 5 bytes - no further optimization for this situation felt necessary since it
is unlikely that a DateTimeKind would be specified without hh:mm also)
Date plus hh:mm takes 5 bytes.
Date plus hh:mm:ss takes 6 bytes.
Date plus hh:mm:ss.fff takes 7 bytes.
| |
WriteOptimized(DateTime) |
Writes a DateTime[] into the stream using the fewest possible bytes.
Notes:
A null or empty array will take 1 byte.
| |
WriteOptimized(Decimal) |
Writes a Decimal value into the stream using the fewest number of bytes possible.
Stored Size: 1 byte to 14 bytes (.Net is 16 bytes)
Restrictions: None
| |
WriteOptimized(Decimal) |
Writes a Decimal[] into the stream using the fewest possible bytes.
Notes:
A null or empty array will take 1 byte.
| |
WriteOptimized(Int16) |
Write an Int16 value using the fewest number of bytes possible.
| |
WriteOptimized(Int16) |
Writes an Int16[] into the stream using the fewest possible bytes.
Notes:
A null or empty array will take 1 byte.
| |
WriteOptimized(Int32) |
Write an Int32 value using the fewest number of bytes possible.
| |
WriteOptimized(Int32) |
Writes an Int32[] into the stream using the fewest possible bytes.
Notes:
A null or empty array will take 1 byte.
| |
WriteOptimized(Int64) |
Write an Int64 value using the fewest number of bytes possible.
| |
WriteOptimized(Int64) |
Writes an Int64[] into the stream using the fewest possible bytes.
Notes:
A null or empty array will take 1 byte.
| |
WriteOptimized(Object) |
Writes a not-null object[] into the stream using the fewest number of bytes possible.
Stored Size: 2 bytes upwards depending on data content
Notes:
An empty object[] takes 1 byte.
The contents of the array will be stored optimized.
| |
WriteOptimized(String) |
Writes a string value into the stream using the fewest number of bytes possible.
Stored Size: 1 byte upwards depending on string length
Notes:
Encodes null, Empty, 'Y', 'N', ' ' values as a single byte
Any other single char string is stored as two bytes
All other strings are stored in a string token list:
The TypeCode representing the current string token list is written first (1 byte),
followed by the string token itself (1-4 bytes)
When the current string list has reached 128 values then a new string list
is generated and that is used for generating future string tokens. This continues
until the maximum number (128) of string lists is in use, after which the string
lists are used in a round-robin fashion.
By doing this, more lists are created with fewer items which allows a smaller
token size to be used for more strings.
The first 16,384 strings will use a 1 byte token.
The next 2,097,152 strings will use a 2 byte token. (This should suffice for most uses!)
The next 268,435,456 strings will use a 3 byte token. (My, that is a lot!!)
The next 34,359,738,368 strings will use a 4 byte token. (only shown for completeness!!!)
| |
WriteOptimized(TimeSpan) |
Writes a TimeSpan value into the stream using the fewest number of bytes possible.
Stored Size: 2 bytes to 8 bytes (.Net is 8 bytes)
Notes:
hh:mm (time) are always stored together and take 2 bytes.
If seconds are present then 3 bytes unless (time) is not present in which case 2 bytes
since the seconds are stored in the minutes position.
If milliseconds are present then 4 bytes.
In addition, if days are present they will add 1 to 4 bytes to the above.
| |
WriteOptimized(TimeSpan) |
Writes a TimeSpan[] into the stream using the fewest possible bytes.
Notes:
A null or empty array will take 1 byte.
| |
WriteOptimized(Type) |
Stores a non-null Type object into the stream.
Stored Size: Depends on the length of the Type's name.
If the type is a System type (mscorlib) then it is stored without assembly name information,
otherwise the Type's AssemblyQualifiedName is used.
| |
WriteOptimized(UInt16) |
Write a UInt16 value using the fewest number of bytes possible.
| |
WriteOptimized(UInt16) |
Writes a UInt16[] into the stream using the fewest possible bytes.
Notes:
A null or empty array will take 1 byte.
| |
WriteOptimized(UInt32) |
Write a UInt32 value using the fewest number of bytes possible.
| |
WriteOptimized(UInt32) |
Writes a UInt32[] into the stream using the fewest possible bytes.
Notes:
A null or empty array will take 1 byte.
| |
WriteOptimized(UInt64) |
Write a UInt64 value using the fewest number of bytes possible.
| |
WriteOptimized(UInt64) |
Writes a UInt64[] into the stream using the fewest possible bytes.
Notes:
A null or empty array will take 1 byte.
| |
WriteOptimized(Object, Object) |
Writes a pair of object[] arrays into the stream using the fewest number of bytes possible.
The arrays must not be null and must have the same length
The first array's values are written optimized
The second array's values are compared against the first and, where identical, will be stored
using a single byte.
Useful for storing entity data where there is a before-change and after-change set of value pairs
and, typically, only a few of the values will have changed.
|