3

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解析を使用するとコードがよりクリーンになりますが、ここでは速度が優先されます。

4

3 に答える 3

5

JSON 解析を使用します。プログラマーとして犯しがちな最大の間違いの 1 つは、速度が重要であると主張し、そのために長くて恐ろしいコードを書くことです。このアプローチにはいくつかの問題があります。

  1. スピードはどのくらい重要ですか?10 ミリ秒のパフォーマンスと引き換えに、記述したコードの 70% を削減できるとしたら、それは許容できるでしょうか? 適切に記述されたソリューションを実装し、それを自分で確認しないと、トレードオフを知ることはできません。

  2. パフォーマンスを低下させるのは、必ずしもパフォーマンスを低下させていると考えられるものではありません。コードのパフォーマンスをテストする必要があるため、コードを高速に記述しても必ずしもパフォーマンスの問題が解決するとは限りません。

  3. 「スピード」と引き換えに、どれだけの頭痛に苦しむ準備ができていますか? 繰り返しになりますが、ベンチマークを行う前に速度はわかりませんが、コードの記述が不十分であったり、長くて乱雑なコードであったりすると、プログラムの保守コストが大幅に増加する可能性があります。これを過小評価しないでください。

VS 2012 にデフォルトで含まれている JSON.NET ライブラリを使用することを強くお勧めします。清潔で使いやすいです。実装してからベンチマークします。感動すると思います。

于 2012-12-03T15:08:36.487 に答える
4

いつでも試して、コードと比較してパフォーマンスを測定できます。ただし、JSON パーサーを使用することをお勧めします。これにより、コードがより安定するからです。nice comparison.NET 用のさまざまな JSON シリアライザーを次に示します。速度が非常に重要な場合、ServiceStack の JSON シリアライザーは最速の 1 つです。

また、記事を読むことを忘れないでstop rolling your CSV parserください。

于 2012-12-03T15:07:19.953 に答える
0

JSON 解析は間違いなくより効率的です。これにより、コードがよりクリーンになり、必要なだけ高速になります。誰もが推奨する最善の方法は、JSON.NETを使用することです。

標準の C# JavascriptSerializer よりも高速であることが証明されています。JSON.NET により、オブジェクトのシリアライズとデシリアライズが簡単になり、迅速かつ効率的に実行されます。

ページの下部に、JSON.NET と通常の C# JSON ライブラリのパフォーマンス比較があります。

于 2012-12-03T15:08:55.047 に答える