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

时间:2017-06-27 15:00:27

标签: python linux windows file-io

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

所以我做了一些基准测试,通过生成和写入一些随机文本到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防御程序的实时检查在Windows 10上默认打开,但即使关闭后也是如此:

# 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上生成许多可以轻松分发的输出文件的时间吗?

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

0 个答案:

没有答案