我正在努力寻求在我们的应用程序中进行更高性能的反序列化过程。我在下面创建了简单测试。当我检查结果时,看起来JsonConvert.DeserializeObject在第一次迭代后工作得更快。
[TestMethod]
public void DeserializeObjectTest()
{
int count = 5;
for (int i = 0; i < count; i++)
{
CookieCache cookieCache = new CookieCache()
{
added = DateTime.UtcNow.AddDays(-1),
VisitorId = Guid.NewGuid().ToString(),
campaigns = new List<string>() { "qqq", "www", "eee" },
target_dt = "3212018",
updated = DateTime.UtcNow
};
Stopwatch stopwatch = Stopwatch.StartNew();
string serializeObject = JsonConvert.SerializeObject(cookieCache);
CookieCache deserializeObject = JsonConvert.DeserializeObject<CookieCache>(serializeObject);
stopwatch.Stop();
double stopwatchElapsedMilliseconds = stopwatch.Elapsed.TotalMilliseconds;
Debug.WriteLine("iteration " + i + ": " + stopwatchElapsedMilliseconds);
}
我的结果:
我认为我正确使用秒表。那么JSON.NET是否在后续调用的反序列化中使用某种内部缓存或优化过程?
由于这是一个Web应用程序,当然,我的日志(280.6466)中的每个Web请求都会得到类似的结果。
我在测试中遗漏了什么?或者是预期的行为?