我正在为Unix和Windows操作系统开发python2应用程序,它可能会在用户请求时生成大量的输出文件(例如50k文件)。在测试期间,我注意到,与Linux上的相同任务相比,在Windows上完成输出生成任务花费了非常多的时间。你知道吗
因此,我做了一点基准测试,生成一些随机文本并将其写入50k文件,然后在Windows和Linux上删除这些文件(我有一台具有windows10和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))
%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 10上,Windows defender的实时检查在默认情况下是打开的,但即使在关闭后:
# Windows defender real-time check off
%time create_files()
Wall time: 27.5 s
%time remove_files()
Wall time: 17.5 s
这完全是由于文件系统(NTFS和Ext4)的差异造成的吗?有什么方法可以减少在Windows上生成许多易于分发的输出文件的时间吗?你知道吗
编辑:忘记提到这些基准测试是在nvmem2.SSD上执行的。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐