title: When the actual download occurs for a Http Request
body: <p>I am downloading a zip file from Amazon S3. Then I convert this zip to <code>MemoryStream</code>. My code is below</p>
  <pre><code>AmazonS3Client s3Client = new AmazonS3Client(basicAwsCredentials, Amazon.RegionEndpoint.GetBySystemName(item.RegionEndPoint));
  //This operation needs about 3-4s
  response = await s3Client.GetObjectAsync(request);
  
  var memoryStream = new MemoryStream();
  //This operation needs about 8-9s
  await response.ResponseStream.CopyToAsync(memoryStream);
  memoryStream.Position = 0;
  </code></pre>
  <p>My connection speed about 70-80KBs. I want to know why coping to memory stream takes too much time?</p>
  <p>My another question is when the actual download occurs in any http request? when I get the response object or when I copy the Stream from response object?</p>
  <h3>Edit</h3>
  <p>I am actually downloading a zip file from AWS S3 and using the MemoryStream to unzip the file like this-</p>
  <pre><code>var zipStream = new ZipInputStream(memoryStream);
  </code></pre>
  <p>Size of my zip is around 2MB. So which operation will be faster? Save the zip into file system, then extract or extract from MemoryStream directly?</p>