【发布时间】:2013-03-06 23:36:06
【问题描述】:
我有一个从第三方来源一次下载数千张图片的功能。每次运行的图像数量范围为 2,500-250,000。正如您可以想象的那样,此过程需要一些时间,并且我希望尽我所能进行优化。
它的工作方式是获取图像路径列表,循环遍历它们并从第 3 方请求图像。目前,在我发出请求之前,我会检查图像是否已经存在于服务器上...如果存在,它会跳过该图像...如果不存在,它会下载它。
我的问题是,是否有人知道下载前的检查是否会减慢进程(或可能加快进程)?下载文件并让它覆盖已经存在的图像会更有效,从而减少检查存在的步骤吗?
如果其他人有任何下载此卷图像的提示,欢迎他们!
【问题讨论】:
-
如果您按顺序执行这些操作,那么是的,检查会减慢速度。但可能不会很多。
-
这听起来像是你可以通过运行进程一次检查和一次不检查来测试的东西。不过,我猜测本地文件系统访问比网络访问要快。因此,跳过文件将弥补检查文件时的任何损失。
-
一定要异步实现这个功能。您还可以从并行运行任务中受益。
-
虽然存储访问通常不是那么快,但您实际上可以比来自不同服务器的映像更快地访问硬盘。所以,是的,显然在下载之前检查你是否真的需要下载它会有所帮助。此外,您不应该有那么多并发下载。将文件放入队列中,一次处理 5 个。