我有一个程序正在进行web请求,然后分解响应。内容类型是JSON,Im当前将响应视为字符串,并使用子字符串对其进行解码
string bidnumber = "buyNowPrice";
int startbid = tradetemp.IndexOf(bidnumber) + 13;
int bidlength = 10;
string bidtemp = tradetemp.Substring(startbid, bidlength);
string endbid = ",";
int endbid2 = bidtemp.IndexOf(endbid);
int bidlength2 = endbid2;
string bidtmp = bidtemp.Substring(0, bidlength2);
long bid = Convert.ToInt64(bidtmp);
我这样做大约有5个变量,并且不断地重复。问题是使用JSON解析是否比我当前的代码更高效(更快)。使用JSON解析会使我的代码更干净,但速度是首要任务。
使用JSON解析。作为一名程序员,你可能会犯的最大错误之一是说速度很重要,并因此编写长而可怕的代码。这种方法有几个问题。
-
速度有多重要?如果你可以消除70%的书面代码来换取10ms的性能,这可以接受吗?如果不实现一个写得好的解决方案并亲眼目睹,你就无法知道权衡。
-
不一定是那些你认为会消耗性能的东西会消耗性能。快速编写代码并不一定能解决性能问题,因为您需要测试的性能。
-
你准备用多大的头痛来换取"速度"?同样,在进行基准测试之前,您不知道速度有多快,但写得不好的代码,甚至长而混乱的代码都会大大增加维护程序的成本。不要低估这一点。
我强烈建议您使用VS 2012中默认包含的JSON.NET库。我用了不少,总体上给人留下了深刻的印象。它既干净又易于使用。实施它,然后进行基准测试。我想你会印象深刻的。
您可以随时尝试并衡量与代码相比的性能。但我建议您使用JSON解析器,因为这将使您的代码更加稳定。以下是.NET的不同JSON序列化程序的nice comparison
。如果速度对您来说非常重要的话,ServiceStack的JSON序列化程序是最快的。
也不要忘记阅读stop rolling your CSV parser
的文章。
JSON解析肯定会更高效。它会让你的代码更干净,而且速度和你想要的一样快。每个人都建议最好的方法是使用:JSON.NET
事实证明,它比标准的C#JavascriptSerializer更快。JSON.NET使序列化和反序列化对象成为一种快捷高效的方式。
页面底部有一个JSON.NET与常规C#JSON库的性能比较。