Я работаю с веб-сокетами, я хочу, чтобы процесс отправки / получения данных был максимально быстрым. Я сталкивался с библиотеками BSON и MsgPack для двоичной сериализации. Однако, используя простые тесты:
@Message
class MessageTemplate implements Serializable {
public String msg;
}
public class test {
static void start(){
MessageTemplate x = new MessageTemplate();
for (int i = 0; i < 1000; ++i)
x.msg += UUID.randomUUID().toString();
System.out.println("===============================================================");
{
long startTime = System.nanoTime();
byte[] bytes = SerializationUtils.serialize(x);
MessageTemplate x1 = (MessageTemplate) SerializationUtils.deserialize(bytes);
long endTime = System.nanoTime();
long duration = (endTime - startTime);
System.out.println("TIME1:" + String.valueOf(duration) + ", SIZE: " + bytes.length);
}
System.out.println("===============================================================");
MessagePack msgpack = new MessagePack();
{
long startTime = System.nanoTime();
try {
byte[] b = msgpack.write(x);
MessageTemplate dst = msgpack.read(b, MessageTemplate.class);
long endTime = System.nanoTime();
long duration = (endTime - startTime);
System.out.println("TIME1:" + String.valueOf(duration) + ", SIZE: " + b.length);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Выход:
starting===============================================================
TIME1:2560388, SIZE: 36171
===============================================================
TIME1:93729732, SIZE: 36013
Кажется, что сериализация намного быстрее, чем MsgPack. Однако в процессе поиска я не нашел упоминания о сериализации java как о «сериализации / формате библиотеки».
Каковы недостатки его использования? Почему это или не используется? Единственный недостаток, который я вижу, это то, что мобильное приложение будет иметь клиент ios / android, поэтому в каждом случае не будет java с обеих сторон.
Спасибо за помощь и ответы.