Java 大目录处理速度慢

Java 大目录处理速度慢,java,io,Java,Io,我们有一个java进程,它对文件进行一些分析,然后将这些文件写入目录。最近我们注意到这一过程急剧放缓。罪魁祸首是已增长到100多万个文件的输出目录。当我们清空目录时,进程的速度急剧加快。为什么会这样?这是一台Windows Server 2012计算机。未对目录中的文件进行任何处理(处理完成后写入目录除外) 您需要使用一种新的数据结构将文件排序到子目录,或者使用更快的硬件(查看SSD)。目前,我认为正在发生的是,当编写一个新文件时,您正在检查所有其他文件 目录在什么操作系统上?您是否处理/列出了

我们有一个java进程,它对文件进行一些分析,然后将这些文件写入目录。最近我们注意到这一过程急剧放缓。罪魁祸首是已增长到100多万个文件的输出目录。当我们清空目录时,进程的速度急剧加快。为什么会这样?这是一台Windows Server 2012计算机。未对目录中的文件进行任何处理(处理完成后写入目录除外)

您需要使用一种新的数据结构将文件排序到子目录,或者使用更快的硬件(查看SSD)。目前,我认为正在发生的是,当编写一个新文件时,您正在检查所有其他文件

目录在什么操作系统上?您是否处理/列出了该目录?嗯,我建议您将30000作为Windows框中文件的绝对上限。。。可能会创建256个子目录00、01、02、03…fd、fe、ff,并将文件分散开来:-(创建操作必须遍历所有百万个条目以确保唯一性。并且支持该目录的数据结构没有针对O(1)进行优化)访问。对于IOPS为120的HDD,对每个文件执行单个磁盘操作需要3个小时。您考虑过使用SSD吗?