Windows和Linux之间的文件IO速度差异

我正在为Unix和Windows操作系统开发python2应用程序,这可能会根据用户请求(例如50k文件)生成大量的输出文件。 在testing过程中,我注意到与Linux上的相同任务相比,输出生成任务在Windows上花费了非常大的时间。

所以我做了一些基准testing,生成一些随机文本到50k文件,然后在Windows和Linux上删除这些文件(我有一个双启动Windows 10和Archlinux的机器,所以下面的代码在同一台机器上执行) 。

import os from os.path import join str_to_write = "a"*500 tdir = "temp" def create_files(): os.makedirs(tdir) for i in xrange(50000): with open(join(tdir, "{}.txt".format(i)), "w") as fh: fh.write(str_to_write) def remove_files(): for i in os.listdir(tdir): os.remove(join(tdir, i)) 

结果

Linux的

 %time create_files() Wall time: 896 ms %time remove_files() Wall time: 555 ms 

视窗

 %time create_files() Wall time: 1min 18s %time remove_files() Wall time: 21.4 s 

我注意到Windows Defender的实时检查在Windows 10上默认打开了,但即使closures了,

 # Windows defender real-time check off %time create_files() Wall time: 27.5 s %time remove_files() Wall time: 17.5 s 

这完全是由于文件系统(NTFS vs Ext4)的差异? 有没有什么可以做的,以减less在Windows上生成许多输出文件,可以轻松分发的时间?

编辑:忘了提及这些基准是在NVMe M.2 SSD上执行的。