数以百万计的小图形文件以及如何克服XP上的慢速文件系统访问

Ell*_*eny 4 filesystems performance google-maps windows-xp

我正在渲染数百万个瓷砖,这些瓷砖将在Google地图上显示为叠加层.这些文件由伦敦大学学院高级空间分析中心的GMapCreator创建.应用程序一次将文件呈现到一个文件夹中,在某些情况下我需要创建大约420万个图块.我使用NTFS文件系统在Windows XP上运行它,磁盘为500GB,并使用默认操作系统选项进行格式化.

我发现随着渲染图块数量的增加,图块的渲染变得越来越慢.我还看到,如果我尝试在Windows资源管理器中查看文件夹或使用命令行,那么整个机器会在恢复到足以再次执行某些操作之前有效锁定几分钟.

我一直在将输入的shapefile分成小块,在不同的机器上运行等等,但这个问题仍然给我带来了相当大的痛苦.我想知道我的磁盘上的簇大小是否会阻碍这个问题,或者我是否应该完全使用另一个文件系统.有没有人有任何想法我怎么能够克服这个问题?

谢谢,

巴里.

更新:

感谢大家的建议.最终的解决方案包括编写一段监视GMapCreator输出文件夹的代码,根据文件名将文件移动到目录层中; 所以名为abcdefg.gif的文件将被移动到\ a\b\c\d\e\f\g.gif中.在GMapCreator的同时运行它可以克服文件系统性能问题.关于生成DOS 8.3文件名的提示也非常有用 - 如下所述,我惊讶于它产生了多大的不同.干杯:-)

jit*_*ter 5

你可以/应该做几件事

  • 禁用自动NTFS短文件名生成(google it)
  • 或者限制文件名使用8.3模式(例如i0000001.jpg,...)

  • 在任何情况下,尝试使文件名的前六个字符尽可能唯一/不同

  • 如果您使用相同的文件夹和(例如添加文件,删除文件,读取文件,...)

    • 使用contig保持目录的索引文件尽可能少碎片(检查解释)
    • 特别是在删除多个文件时,请考虑使用文件夹删除技巧来减少direcotry索引文件的大​​小
  • 如上所述,考虑将文件拆分为多个目录.

.而不是

directory/abc.jpg
directory/acc.jpg
directory/acd.jpg
directory/adc.jpg
directory/aec.jpg
Run Code Online (Sandbox Code Playgroud)

使用

directory/b/c/abc.jpg
directory/c/c/acc.jpg
directory/c/d/acd.jpg
directory/d/c/adc.jpg
directory/e/c/aec.jpg
Run Code Online (Sandbox Code Playgroud)