What is ByteClap?
Library for C # made for use with Unity™
Provides functions for building a static serializer
"Feel limitations on speeding up applications"
"Want to reduce the amount of communication data"
"Unsatisfactory with the function of the standard serializer"
To solve such a problem ByteClap was born.
EXECUTION SPEED
Works much faster than BinaryFormatter and JsonUtility.
Further speeding up is possible depending on tuning.
DATA SIZE
Output binary data with only minimal information
It can output in Json format, XML format, and even smaller than BinaryFormatter
VARIOUS FUNCTIONS
Version control function of data and dealing with polymorphism
There are many data types that can be converted by standard
1. Conversion of very small object (having only one int field) executed 1,000,000 times(unit: seconds)
2. Conversion of small object(having fields of multiple primitive types) executed 1,000,000 times(unit: seconds)
3. Conversion of large object(having fields such as strings and arrays) executed 1,000,000 times(unit: seconds)
Unprecedented overwhelming speed
Please see the graph below
It is a comparison result of several standard Serializer
and ByteClap execution times.
As a result of sincerity pursuing speed, we were able to make it so fast.
There is no trick
Just simple, it's fast
It is uncompressed,
but this size
Serializing ByteClap does not output extra data.
So even though it is uncompressed, this size
If the data size is small, not only saving of storage but also
reduction of data writing time to storage,
saving of transmitted and received data amount,
shortening of data transmission / reception time,
suppression of power consumption for data transmission and reception,
etc...
Effect can be expected.
3. Size comparison of serialization results of large object(having fields such as strings and arrays) (unit: Byte)
2. Size comparison of serialization results of small object(having fields of multiple primitive types) (unit: Byte)
1. Size comparison of serialization results of very small object (having only one int field) (unit: Byte)
3'. Conversion of large object(having fields such as strings and arrays) executed 1,000,000 times(unit: seconds)
To further higher speed
You can further speed up by tuning ByteClap properly.
The graph below shows the result of performance tuning
added to above No. 3 (large object conversion result).
Can not believe it?
But it is a reality.
* Performance tuning: Use intermediate processors (all fields are in intermediate byte mode), add all fields as fixed length, reuse the byte array at serialization, reuse instances at deserialization
NOTE: The results of these measurements show the results we conducted in our environment, but the execution speed depends on the runtime environment. It does not necessarily guarantee that this result will be obtained.
Output in the same byte order regardless of execution environment
ByteClap is designed to output data in the specified byte order regardless of the architecture of the execution environment. So you can reliably perform data communication with the server and data transfer to other terminals. The byte order that can be output is little endian and big endian.
Standard support for various data types
Have you ever been suffering from restrictions on data types supported by the serializer?
For ByteClap, it corresponds to various data types, such as Dictionary and other collections, UnityEngine's Vector2 and Rect, and so on.
Furthermore, you can easily add data types yourself, so you will not be bothered by restrictions on data types.
Please see here for "List of Standard Supported Data Types".
It can convert regardless of the modifier applied to the field
You can convert any accessibility fields, as well as readonly variables and static variables. Therefore, you do not need to change qualifiers, scopes, object design etc for serialization processing.
Polymorphism support
ByteClap can also support polymorphism.
By writing a simple program, The data type at serialization can be reproduced during deserialization.
Data layout version control
ByteClap can handle even if the members of the data type to be serialized are changed due to the version upgrade of your program.
Byte data outputted in the past layout can be converted to the latest layout and read out.
Further speed up and distributed processing load by intermediate conversion function
The intermediate conversion function is a technique that reduces the work of serializing / deserializing the entire object by performing conversion processing only on the variables used, thus speeding up the processing.
Using ByteClap you can easily define classes corresponding to intermediate transformation.
Easy to customize as it is a static serializer
Unlike many common serializers that use dynamic code analysis / generation technology such as reflection, ByteClap employs a static serializer scheme that describes the information required for serialization as a program.
This makes it easy to write various customizations and fine tunings as a program.
More powerful with extensions
ByteClap plans to release various extended functions such as encryption, tamper check, and data compression in the future.
These features will help you make your program even more powerful and attractive.
For a list of functions planned to be developed, please click here.
Achieve the impossible
Unparalleled power for realization
Not only is it fast and the data size is small.
A sophisticated variety of functions
will strongly support your program development.