The article deals with the issue of using data serializers for the implementation of projects related to the processing of large volumes of data, as well as the support of high-speed data transmission in distributed systems. It is shown that in this context, the choice of the most effective serialization mechanism is critical for ensuring the performance and scalability of applications. The purpose of this work is to study the effectiveness of data serializers of the C# programming language by developing a software product for testing serializers using objects of different size and type. A review of scientific research on the use of various data serialization formats: XML, JSON, BSON, MessagePack, Smile, Protocol Buffers, Flat Buffers, Apache Thrift was conducted. It was concluded that XML and JSON formats are the most popular today, and their comparative analysis was performed. The expediency of using the JSON serialization format is substantiated, which is due to its safety compared to the binary format, its smaller size compared to the XML format, as well as the support of most software development tools. The .NET framework is chosen, which provides standard tools for JSON serialization of the C# programming language, namely: System.Runtime.Serialize.Json and System.Text.Json, which are supplied by default. The most popular software solutions for serializing C# objects are analyzed, the feasibility of testing such serializers as Jil, Json.NET, Utf8Json, SpanJson and standard serializers is shown in order to identify the advantages and disadvantages of their use for the implementation of specific tasks and projects. The C# BenchmarkDotNet programming language library was chosen to create the tester program. It is noted that this framework of the .NET platform allows you to convert methods into tests and create performance testing thanks to a powerful statistical mechanism. A class diagram and a component diagram of the developed software are given. A study of 5 data serializers was conducted, which included the execution of 7 experiments on serialization of objects with different types of data. The consumption of time and working memory during serialization of small and large objects was analyzed; objects containing one-dimensional, two-dimensional and three-dimensional arrays of natural numbers, an object with a complex chain of class inheritance, as well as an object containing a dictionary. The results of experimental studies showed the dependence of the effectiveness of serializers on the type and volume of data to be serialized. It is concluded that there is no one-size-fits-all serializer that will perform best in all cases. Recommendations for the use of various serializers are provided, taking into account the requirements of a specific project
Read full abstract