对象与字典的一般性能 从/进入 JSON



我正在使用 JSON.NET 转换为JSON,用于服务器和客户端之间的数据传输。

我想问你,在序列化和反序列化过程中的性能是否有一些很大的差异,如果不是,应用程序中的一般性能呢?

处理对象比字典更快吗?我的意思是读取变量,获取数组中某些索引的值等。还是 +- 相同?

做了一些测试,在我的计算机上序列化和反序列化 1 000 000 个简单的非嵌套对象需要 5 秒。使用字典大约需要 4 秒,所以这并不重要。

由于对象的灵活性,我建议使用对象。在 .NET 中,索引器从字典中检索值将始终为 O(1)。

    public void TestSerialization()
    {
        var loops = 1000000;
        var w1 = new Stopwatch(); w1.Start();
        for (int i = 0; i < loops; i++)
        {
            var serializedDic = JsonConvert.SerializeObject(new Dictionary<string, string>() { { "Color", "Blue" }, { "Price", "5" } });
            var deserializedDic = JsonConvert.DeserializeObject(serializedDic);
        }
        w1.Stop();
        Debug.WriteLine(w1.Elapsed); //4.37 sec
        var w2 = new Stopwatch(); w2.Start();
        for (int i = 0; i < loops; i++)
        {
            var serializedObj = JsonConvert.SerializeObject(new CarObj() { Color = "blue", Price = 5 });
            var deserializedObj = JsonConvert.DeserializeObject(serializedObj);
        }
        w2.Stop();
        Debug.WriteLine(w2.Elapsed); //5.57 sec
    }
    public class CarObj
    {
        public string Color { get; set; }
        public float Price { get; set; }
    }

最新更新