3

API から大きな JSON オブジェクトをダウンロードする際に問題が発生しています。通常、このドキュメントのサイズは小さいですが、場合によっては非常に大きくなります (100k 以上)。これにより、大きなオブジェクト ヒープが使用され、パフォーマンス上の懸念が生じます。

応答バイトを返すダウンローダ メソッドの内容は次のとおりです。

using (var httpWebResponse = (HttpWebResponse)request.GetResponse())
{
    byte[] responseBytes;
    using (var responseStream = httpWebResponse.GetResponseStream())
    {
        using (var memoryStream = new MemoryStream())
        {
            if (responseStream != null)
            {
               responseStream.CopyTo(memoryStream);
            }
            responseBytes = memoryStream.ToArray();
        }
     }
     return responseBytes;
 }

最終的な目標が Web 応答の内容をバイト配列に取得することである場合、これが最も効率的な方法ですか? 以前は、ストリームをチャンクで読み取るだけでした。これは、90% の時間 (JSON 応答が 85k 未満の場合) では CopyTo よりも効率が悪いと言われていますが、残りの 10% では効率的です。

私はこれについて一般的なコンセンサスを見つけることができないようです. 任意の入力をいただければ幸いです。

4

0 に答える 0