namespace DataTable { class Program { static void Main(/*string[] args*/) { //var listDtos = new List(100); /* *** Size of TestDto calc *** * * ** data binary size (Not implemented) ** * Date : DateTime : 4b * Mode : int32? : 4b * User : string : 2-64b * WellDepth : double? : 8b * TOTAL data size = 18-80b * * ** header binary size (Not implemented) ** * *DateTime : len("DateTime") + 2 + len("Date") + 2 = 16b * Mode : 14b * User : 14b * WellDepth : 20b * columnsCount : 2b * TOTAL header size = 66b * * ** json as tab ** * * header size: 137b * json row size: 63b * * total for 1 record : 200b * total for 2 records : 263b * * ** json as list ** * * Raw listItem size: 175b * total for 2 records : 350b * * ** example 100 records ** * tabJsonBytes: 6602 * listJsonBytes: 9628 * tabBinBytes: 7765 (by dangerous BinaryFormatter) * listBinBytes: 4366 (by dangerous BinaryFormatter) */ //for (int i = 0; i < 100; i++) // listDtos.Add(new TestDto{ // Date = DateTime.Now.AddSeconds(i), // Mode = 1, // WellDepth = i * Math.PI // }); //var tMapper = new TableMapper(); //var tab = tMapper.MakeTable(listDtos); //var e = tMapper.AsEnumerable(tab); //var tabJson = JsonSerializer.Serialize(tab); //var listJson = JsonSerializer.Serialize(listDtos); //var tabJsonBytes = JsonSerializer.SerializeToUtf8Bytes(tab); //var listJsonBytes = JsonSerializer.SerializeToUtf8Bytes(listDtos); //var formatter = new BinaryFormatter(); //var mem = new MemoryStream(); //formatter.Serialize(mem, tab); //var tabBinBytes = new byte[mem.Length]; //Array.Copy(mem.GetBuffer(), tabBinBytes, mem.Length); //mem = new MemoryStream(); //formatter.Serialize(mem, listDtos); //var listBinBytes = new byte[mem.Length]; //Array.Copy(mem.GetBuffer(), listBinBytes, mem.Length); //Console.WriteLine($"tabJsonBytes:{tabJsonBytes.Length}"); //Console.WriteLine($"listJsonBytes:{listJsonBytes.Length}"); //Console.WriteLine($"tabBinBytes:{tabBinBytes.Length}"); //Console.WriteLine($"listBinBytes:{listBinBytes.Length}"); } } }