Exemple #1
0
        private static void BenchmarkApex(TypicalMessage message)
        {
            var s        = new MemoryStream();
            var settings = new Settings
            {
                AllowFunctionSerialization = false,
                SerializationMode          = Mode.Tree,
                SupportSerializationHooks  = false,
            };

            settings.MarkSerializable(typeof(TypicalMessage));

            var binary = Binary.Create(settings);

            binary.Write(message, s);
            Console.WriteLine("Benchmarking Apex " + s.Length);
            binary.Write(message, s);
            var sw = Stopwatch.StartNew();

            for (var i = 0; i < 10_000_000; i++)
            {
                s.Position = 0;
                binary.Write(message, s);
            }
            Console.WriteLine(sw.Elapsed.TotalMilliseconds);
        }
Exemple #2
0
        private static void Main(string[] args)
        {
            var message = new TypicalMessage
            {
                DateProp   = DateTime.Now,
                GuidProp   = Guid.NewGuid(),
                IntProp    = 123,
                StringProp = "Hello"
            };


            BenchmarkFlex(message);
            //    BenchmarkBaseline(message);
            BenchmarkFlexUntyped(message);
            BenchmarkFlexMemoryStream(message);


            //    BenchmarkApex(message);
        }
Exemple #3
0
        private static void BenchmarkBaseline(TypicalMessage message)
        {
            var bytes = new byte[100];

            Console.WriteLine("Benchmarking baseline - faster than this is probably not possible");
            var sw = Stopwatch.StartNew();

            for (var i = 0; i < 10_000_000; i++)
            {
                //Note to reader:
                // moving each row to static methods with aggressive inlining makes it identical to this
                Encoding.UTF8.GetBytes(message.StringProp, bytes);
                BitConverter.TryWriteBytes(bytes, message.IntProp);
                message.GuidProp.TryWriteBytes(bytes);
                BitConverter.TryWriteBytes(bytes, message.DateProp.Ticks);
            }

            Console.WriteLine(sw.Elapsed.TotalMilliseconds);
        }
Exemple #4
0
        private static void BenchmarkFlexMemoryStream(TypicalMessage message)
        {
            var serializer = new Serializer(new SerializerOptions(false, new[] { typeof(TypicalMessage) }));
            var session    = serializer.CreateSession();
            var ms         = new MemoryStream();

            //warmup
            serializer.Serialize(message, ms, session);

            Console.WriteLine("Benchmarking Flex ");
            var sw = Stopwatch.StartNew();

            for (var i = 0; i < 10_000_000; i++)
            {
                ms.Position = 0;
                serializer.Serialize(message, ms, session);
            }

            Console.WriteLine(sw.Elapsed.TotalMilliseconds);
        }
Exemple #5
0
        private static void BenchmarkFlex(TypicalMessage message)
        {
            var serializer = new Serializer(new SerializerOptions(false, new[] { typeof(TypicalMessage) }));
            var session    = serializer.CreateSession();
            var bytes      = new byte[100];
            var b          = new SingleSegmentBuffer(bytes);
            var writer     = new Writer <SingleSegmentBuffer>(b, session);

            //warmup
            serializer.Serialize(message, ref writer);

            Console.WriteLine("Benchmarking Flex ");
            var sw = Stopwatch.StartNew();

            for (var i = 0; i < 10_000_000; i++)
            {
                serializer.Serialize(message, ref writer);
            }

            Console.WriteLine(sw.Elapsed.TotalMilliseconds);
        }