我想将我的数据集序列化为JSON 。
以下是我的ASMX序列化对象的代码段
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetProviderMemberDetail(string jsonString)
{
BPMember bp = new BPMember();
List<BOProvider> listProvider = bp.GetProviderMemberDetail(jsonString);
return ConvertToSerializedJson(listProvider);
}
这是ConvertToSerializedJson所做的事情
public string ConvertToSerializedJson(Object listBO)
{
string jsonReturn = String.Empty;
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
jsonReturn = serializer.Serialize(listBO);
return jsonReturn;
}
我必须序列化的数据量大约是200,000个数据。
我尝试过这种方法,我的浏览器挂起并没有响应,我必须等待6分钟才能完成。
第二次尝试,我尝试了 Newtonsoft.Json 的序列化功能, 添加
using Newtonsoft.Json;
并使用
更改序列化程序代码return JsonConvert.SerializeObject(listProvider);
它加速了一点,但让我的浏览器几乎挂起了。完成所有序列化需要4分钟。
问题是,我如何才能加快序列化的速度?我的查询只需4秒即可完成查询执行并从数据库中检索数据。需要很长时间的是序列化过程 有没有比这更快的功能?请发布名称库或功能和基准,如果我得到很好的重大更改,我会更新这篇文章。
干杯。
已更新 这就是为什么我爱你们,我加快了速度,你们的建议是善良的,这些是我“调整”的东西。
正如@Saravanan所说,我减少了我的BO上未使用的(或使用的频率很小)。这是一次成功的调整。从300秒(5分钟)到18秒。
正如@sanguaire所述,我正在尝试使用fastJSON库(download here),编译为dll,添加对我项目的引用和这个速度。
为我检索200,000个数据所需的时间约为14秒到18秒。这是我17columns的基准。
感谢你们的意见。这么晚才回复很抱歉。我会(如果我的积分达到最高投票标准)在这里投票给你的答案。
答案 0 :(得分:2)
答案 1 :(得分:0)
看到这个: http://aumcode.github.io/serbench/
图表(速度和有效负载大小):
典型人/单,列表[100],列表[5000] ...... http://aumcode.github.io/serbench/Specimens_Typical_Person-201507121220/web/overview-charts.htm
纠缠的对象图/会议/参与者/朋友...... http://aumcode.github.io/serbench/ObjectGraph_Conference-201507121245/web/overview-charts.htm
网络堆栈批处理... http://aumcode.github.io/serbench/MsgBatching-201507121210/web/overview-charts.htm
我们还有EDI X12测试,尚未发布。获取工具并运行如下: &#34; sb edi.laconf&#34;它将在磁盘上生成Web报告