【发布时间】:2015-03-07 04:01:22
【问题描述】:
我有一个控制台应用程序,大约需要 625 天才能完成。除非有办法让它更快。
首先,我在一个包含大约 4,000,000 个文件(如果不是更多的话)的目录中工作。我正在一个数据库中工作,每个文件都有一行,然后是一些。
现在使用 SQL 比较快,瓶颈是当我使用File.Move() 时,每次移动需要 18 秒才能完成。
有没有比File.Move()更快的方法?
这是瓶颈:
File.Move(Path.Combine(location, fileName), Path.Combine(rootDir, fileYear, fileMonth, fileName));
所有其他代码都运行得非常快。我需要做的就是将一个文件移动到一个新位置,然后更新数据库位置字段。
如果需要,我可以显示其他代码,但实际上以上是当前唯一的瓶颈。
【问题讨论】:
-
如果您仍然使用数据库,为什么需要 4,000,000 个文件?
-
@TimSchmelter 他们最初是这样设计的。数据库包含文件中的一些信息,我需要更新的唯一部分是位置列。该列告诉应用程序他们使用文档所在的位置来打开它。
-
如果每次移动需要 18 秒,那么其他地方就非常错了,这可能不是你使用 API 造成的。
-
@JamesWilson 那么操作系统更新包含目录可能需要很长时间。