예제 #1
0
        public void NewtonsoftTest()
        {
            //    CompositeResolver.RegisterAndSetAsDefault(
            //new[] { TypelessFormatter.Instance },
            //new[] { NativeDateTimeResolver.Instance, ContractlessStandardResolver.Instance });

            //            CompositeResolver.RegisterAndSetAsDefault(
            //    // Resolve DateTime first
            //    MessagePack.Resolvers.NativeDateTimeResolver.Instance,
            //    MessagePack.Resolvers.StandardResolver.Instance,
            //       MessagePack.Resolvers.BuiltinResolver.Instance,
            //                // use PrimitiveObjectResolver
            //                PrimitiveObjectResolver.Instance
            //);

            Console.WriteLine("开始异步测试");
            var threadCount = 50;
            var finishCount = 0;

            for (int i = 0; i < threadCount; i++)
            {
                var thread = new Thread(() =>
                {
                    var newObj = new ContainerBag()
                    {
                        Key     = Guid.NewGuid().ToString(),
                        Name    = Newtonsoft.Json.JsonConvert.SerializeObject(this),
                        AddTime = SystemTime.Now.ToUniversalTime()
                    };

                    var dtx           = SystemTime.Now;
                    var serializedObj = Newtonsoft.Json.JsonConvert.SerializeObject(newObj);
                    Console.WriteLine($"Newtonsoft.Json.JsonConvert.SerializeObject 耗时:{SystemTime.DiffTotalMS(dtx)}ms");

                    dtx = SystemTime.Now;
                    var containerBag = Newtonsoft.Json.JsonConvert.DeserializeObject <ContainerBag>(serializedObj);//11ms
                    Console.WriteLine($"Newtonsoft.Json.JsonConvert.DeserializeObject 耗时:{SystemTime.DiffTotalMS(dtx)}ms");

                    Console.WriteLine(containerBag.AddTime.ToUniversalTime());

                    //Assert.AreEqual(containerBag.AddTime.Ticks, newObj.AddTime.Ticks);
                    Assert.AreNotEqual(containerBag.GetHashCode(), newObj.GetHashCode());
                    finishCount++;
                });
                thread.Start();
            }

            while (finishCount < threadCount)
            {
                //等待
            }
        }
예제 #2
0
        public void StackExchangeRedisExtensionsTest()
        {
            Console.WriteLine("开始异步测试");
            var threadCount = 100;
            var finishCount = 0;

            for (int i = 0; i < threadCount; i++)
            {
                var thread = new Thread(() =>
                {
                    var newObj = new ContainerBag()
                    {
                        Key     = Guid.NewGuid().ToString(),
                        Name    = Newtonsoft.Json.JsonConvert.SerializeObject(this),
                        AddTime = SystemTime.Now
                    };
                    var dtx           = SystemTime.Now;
                    var serializedObj = CacheSerializeExtension.SerializeToCache(newObj);
                    Console.WriteLine($"StackExchangeRedisExtensions.Serialize耗时:{SystemTime.DiffTotalMS(dtx)}ms");

                    dtx = SystemTime.Now;
                    var containerBag = CacheSerializeExtension.DeserializeFromCache <ContainerBag>((string)serializedObj);//11ms
                    Console.WriteLine($"StackExchangeRedisExtensions.Deserialize耗时:{SystemTime.DiffTotalMS(dtx)}ms");

                    Assert.AreEqual(containerBag.AddTime.Ticks, newObj.AddTime.Ticks);
                    Assert.AreNotEqual(containerBag.GetHashCode(), newObj.GetHashCode());
                    finishCount++;
                });
                thread.Start();
            }

            while (finishCount < threadCount)
            {
                //等待
            }


            Action action = () =>
            {
                var newObj = new ContainerBag()
                {
                    Key     = Guid.NewGuid().ToString(),
                    Name    = Newtonsoft.Json.JsonConvert.SerializeObject(this),
                    AddTime = SystemTime.Now
                };
                var dtx           = SystemTime.Now;
                var serializedObj = CacheSerializeExtension.SerializeToCache(newObj);
                Console.WriteLine($"StackExchangeRedisExtensions.Serialize耗时:{SystemTime.DiffTotalMS(dtx)}ms");

                dtx = SystemTime.Now;
                var containerBag = CacheSerializeExtension.DeserializeFromCache <ContainerBag>((string)serializedObj);//11ms
                Console.WriteLine($"StackExchangeRedisExtensions.Deserialize耗时:{SystemTime.DiffTotalMS(dtx)}ms");

                Assert.AreEqual(containerBag.AddTime.Ticks, newObj.AddTime.Ticks);
                Assert.AreNotEqual(containerBag.GetHashCode(), newObj.GetHashCode());
            };

            Console.WriteLine("开始同步测试");
            for (int i = 0; i < 10; i++)
            {
                action();
            }
        }