Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#优化JSON编写器_C#_Json_Optimization - Fatal编程技术网

C#优化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

我正在写一个JSON作曲家,但我对自己的速度不满意

输入是哈希表和/或对象列表

下面是一段代码。”“de”是来自哈希表的DictionaryEntry,“output”是我们正在构建的json字符串

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万%的性能提升总是很好的。但是,您应该重新使用现有的库。