【发布时间】:2023-04-10 00:00:01
【问题描述】:
根据选择的选项,我有几种不同的方法可以在我的应用程序中将整个目录上传到 Amazon S3。目前,其中一个选项将并行执行多个目录的上传。我不确定这是否是个好主意,因为在某些情况下它会加快上传速度,而在其他情况下会减慢速度。当有一堆小目录时,速度似乎会加快,但如果批处理中有大目录,速度就会变慢。我正在使用下面看到的并行 ForEach 循环并利用 AWS API 的 TransferUtility.UploadDirectoryAsync() 方法:
Parallel.ForEach(dirs,myParallelOptions,
async dir => { await MyUploadMethodAsync(dir) };
TransferUtility.UploadDirectoryAsync() 方法在 MyUploadMethodAsync() 中的位置。 TransferUtility 的上传方法都执行单个文件的部分并行上传(如果大小足够大的话),因此执行目录的并行上传也可能是矫枉过正。显然,我们仍然受限于可用的带宽量,所以这可能是一种浪费,我应该只使用带有 UploadDirectoryAsync() 方法的常规 foreach 循环。谁能提供一些关于这是否不适合并行化的见解?
【问题讨论】:
标签: c# amazon-web-services parallel-processing task-parallel-library parallel.foreach