我正在使用 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; }
}