C# 并行上传到S3的速度非常慢
我很难想出如何在我的C#应用程序中优化AmazonS3的上传速度 我创建了一个循环来测试15次同步上传(在同一个图像文件上运行) 1图像上传:平均4秒 5次并发图像上载:平均5秒C# 并行上传到S3的速度非常慢,c#,multithreading,file-upload,amazon-web-services,amazon-s3,C#,Multithreading,File Upload,Amazon Web Services,Amazon S3,我很难想出如何在我的C#应用程序中优化AmazonS3的上传速度 我创建了一个循环来测试15次同步上传(在同一个图像文件上运行) 1图像上传:平均4秒 5次并发图像上载:平均5秒 15次并发图像上传:7-13秒您的带宽肯定是一个限制因素,并行上传会加剧这一因素。假设您有X带宽,根据并发上载的数量,每次上载的图像都会占用该值的一小部分。谢谢,我将使用2KB图像进行测试本地上载1.5K图像:15(5-7秒),30(约11秒)。同样的结果是非常小的图片,而且我有一个非常快的互联网连接。如果你同时上传文
15次并发图像上传:7-13秒您的带宽肯定是一个限制因素,并行上传会加剧这一因素。假设您有X带宽,根据并发上载的数量,每次上载的图像都会占用该值的一小部分。谢谢,我将使用2KB图像进行测试本地上载1.5K图像:15(5-7秒),30(约11秒)。同样的结果是非常小的图片,而且我有一个非常快的互联网连接。如果你同时上传文件,它们需要更长的时间来完成也就不足为奇了。但无论如何,这通常不是一个有趣的因素——比较在k个线程中上传X张图片的总时间,并检查这些时间是如何变化的。
HttpPostedFile file = HttpContext.Current.Request.Files[0];
for(int i=0; i<15; i++){
AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey);
TransferUtility tu = new TransferUtility(client);
new Thread(() =>
{
// timer starts here
Thread.CurrentThread.IsBackground = true;
tu.Upload(ur); // upload file synchronously
// timer stops here
}
}
new Thread(() =>
{
// stopWatch stopped at the FinishedAsyncUpload function
tempObj.StopWatch = new Stopwatch();
tempObj.StopWatch.Restart();
Thread.CurrentThread.IsBackground = true;
IAsyncResult ar = tu.BeginUpload(ur, new AsyncCallback(FinishedAsyncUploadToTempFolder), tempObj);
}).Start();