C#优化JSON编写器
我正在写一个JSON作曲家,但我对自己的速度不满意 输入是哈希表和/或对象列表 下面是一段代码。”“de”是来自哈希表的DictionaryEntry,“output”是我们正在构建的json字符串C#优化JSON编写器,c#,json,optimization,C#,Json,Optimization,我正在写一个JSON作曲家,但我对自己的速度不满意 输入是哈希表和/或对象列表 下面是一段代码。”“de”是来自哈希表的DictionaryEntry,“output”是我们正在构建的json字符串 if (de.Value.GetType() == typeof(Hashtable)) { output += RenderObject((Hashtable)de.Value, level + 1, format); } 这就是我的整个代码的基本构建方式 我现在的测试用例是一个包含10
if (de.Value.GetType() == typeof(Hashtable))
{
output += RenderObject((Hashtable)de.Value, level + 1, format);
}
这就是我的整个代码的基本构建方式
我现在的测试用例是一个包含10000个哈希表的列表,每个哈希表有4个不同类型的键/值对
在一台蹩脚的台式计算机上,它在整整60秒内生成了整个字符串。输出为927KB
我正在寻找优化它的建议,并输入我应该满意的速度。生成需要整整一分钟,您需要使用
StringBuilder
递归时,应附加到原始StringBuilder;不要为每个对象创建单独的StringBuilder。您需要使用
StringBuilder
递归时,应附加到原始StringBuilder;不要为每个对象创建单独的StringBuilder。
如果(de.Value是IDictionary)
为什么要重新发明轮子?您可能需要使用探查器来查找热点。不过,就@SLaks而言,已经有很多JSON序列化程序可用。我已经查看了JSON.org上列出的所有JSON序列化程序。没有一个能完全满足我的要求,所以我制作了自己的解析器和编写器。其中大多数用于序列化和反序列化对象,这有利于存储数据。我对交换数据更感兴趣,并且想要一些非常类似于PHP5.3JSON_decode()的东西,如果(de.Value是IDictionary)为什么你要发明轮子?你可能需要使用一个分析器来找到热点。不过,就@SLaks而言,已经有很多JSON序列化程序可用。我已经查看了JSON.org上列出的所有JSON序列化程序。没有一个能完全满足我的要求,所以我制作了自己的解析器和编写器。其中大多数用于序列化和反序列化对象,这有利于存储数据。我对交换数据更感兴趣,并且想要一些非常类似于PHP5.3JSON_decode()的东西好吧,我这样做了,我的一个测试的生成时间从120秒到0.046秒。我现在觉得自己很蠢:)谢谢你的回答。获得26万%的性能提升总是很好的。但是,您应该重新使用现有的库。好的,我这样做了,我的一个测试的生成时间从120秒到0.046秒。我现在觉得自己很蠢:)谢谢你的回答。获得26万%的性能提升总是很好的。但是,您应该重新使用现有的库。