【发布时间】:2010-12-13 05:31:00
【问题描述】:
我有一个包含大约 500k jpg 文件的巨大目录,我想归档所有早于某个日期的文件。目前,该脚本需要数小时才能运行。
这与 GoGrid 存储服务器的性能非常差有很大关系,但与此同时,我确信有一种更有效的方式 Ram/Cpu 明智地完成我正在做的事情。
这是我的代码:
var dirInfo = new DirectoryInfo(PathToSource);
var fileInfo = dirInfo.GetFiles("*.*");
var filesToArchive = fileInfo.Where(f =>
f.LastWriteTime.Date < StartThresholdInDays.Days().Ago().Date
&& f.LastWriteTime.Date >= StopThresholdInDays.Days().Ago().Date
);
foreach (var file in filesToArchive)
{
file.CopyTo(PathToTarget+file.Name);
}
Days().Ago() 只是语法糖。
【问题讨论】:
-
那个依赖主机操作系统,应该是一流的。
-
是的,事实是那里可能有数百万个文件,由于类似的性能问题,我什至无法通过 Windows 资源管理器获取目录计数。
-
语法纳粹说:“表演”不是一个词:)
-
Performant 就是这么一个词。 dictionary.reference.com/browse/performant
-
嗯,这是因为它被使用了,而字典是一个活生生的、不断变化的东西。但在技术意义上,它与“Homie”一样多。
标签: c# performance file-copying