最近,尝试使用NewtonSoft API查找将Json字符串解析为相应C#对象所用的时间。
我正在使用自己的Json解析器代码将Json字符串转换为C#对象。
所以,想想比较这两件事的时间。
这是我尝试过的: -
for(int i=0;i<2;i++)
{
var inputText = File.ReadAllText("TextFile1.txt");
var st = DateTime.Now;
var obj = JsonConvert.DeserializeObject<Text1Root>(inputText);
var end = DateTime.Now;
Console.WriteLine("NewtonJsoft: " + (end - st).Milliseconds);
var st1 = DateTime.Now;
var generatedObj = ConvertJsonStrToClassStructure<Text1Root>
(inputText); //My parser code
var en1 = DateTime.Now;
Console.WriteLine("Custom: " + (en1 - st1).Milliseconds);
}
var inputText = File.ReadAllText("TextFile1.txt");
Console.WriteLine("For TextFile1.txt");
var st = DateTime.Now;
dynamic obj = JsonConvert.DeserializeObject<Text1Root>(inputText);
var end = DateTime.Now;
Console.WriteLine("NewtonJsoft: " + (end - st).Milliseconds);
var st1 = DateTime.Now;
dynamic generatedObj = ConvertJsonStrToClassStructure<Text1Root>
(inputText);
var en1 = DateTime.Now;
Console.WriteLine("Custom: " + (en1 - st1).Milliseconds);
inputText = File.ReadAllText("TextFile2.txt");
Console.WriteLine("For TextFile2.txt");
st = DateTime.Now;
obj = JsonConvert.DeserializeObject<Text2Root>(inputText);
end = DateTime.Now;
Console.WriteLine("NewtonJsoft: " + (end - st).Milliseconds);
st1 = DateTime.Now;
generatedObj = ConvertJsonStrToClassStructure<Text2Root>(inputText);
en1 = DateTime.Now;
Console.WriteLine("Custom: " + (en1 - st1).Milliseconds);
var st = DateTime.Now;
var obj = JsonConvert.DeserializeObject<Text1Root>(inputText);
var end = DateTime.Now;
Console.WriteLine("NewtonJsoft: " + (end - st).Milliseconds);
对于Ex1: -
对于JsonConvert.DeserializeObject&lt;&gt;(“”)的第一次运行,需要一些时间来处理,但是在下一次运行中
在循环中,花了近0米秒。它是否在内部使用任何类型的缓存?我试着查看MemCache对象。但遗憾的是没有任何东西。
对于Ex2: -
为了处理TextFile1.txt,花了一些时间。但是在处理TextFile2.txt时,花了很短的时间。
对于Ex3: -
为了测试,我只需要解析NewtonSoft代码。这一次,我每次都重新启动应用程序,检查NewtonSoft实际上是否花费了微不足道的时间来解析输入。但是在每次运行中,需要花费一些时间来解析150毫秒(app)。
所以,我没有任何线索,
1.在连续运行中,如何在可忽略的时间内将字符串解析为C#
2.如何在第一次运行中花费一些时间进行解析/或者如何在解析每次重新启动应用程序时花费时间。
3. NewtonSoft是否正在使用内部缓存等任何其他内容。如果是这样,
有没有办法可以关闭这种行为。
任何人都可以就这一点提出一些意见。
感谢。