我正在尝试改善程序的磁盘写入能力,但是很难实现。我的磁盘是Samsung EVO 860,写入速度为520MB / s,但是(根据Windows任务管理器)我的速度仅为〜4.4MB / s。阅读了几篇文章之后,我一直在关注NtUserCreateWindowEx
方法的buffering
关键字;一些测试的示例:
open
据我了解,通过将缓冲区大小增加到合理的水平(此处约为64KB),可以减少写操作,从而减少系统调用。但是我设法在性能上取得了明显的进步。
我还read说,使用# writing a 2GB file of 0's
def foo():
start = Timer() # timeit.default_timer as Timer
with open(fp, 'wb') as f: # default buffering: 8192
for _ in range(int(2**31)):
f.write(b'0')
print(Timer() - start)
def bar():
start = Timer() # timeit.default_timer as Timer
with open(fp, 'wb', buffering=65536) as f:
for _ in range(int(2**31)):
f.write(b'0')
print(Timer() - start)
foo() # 501.65
bar() # 498.06
可能会产生很大的收益,但是我还没有给出一个机会。
如何正确使用增加的缓冲区(或mmap
)来实现磁盘的最大吞吐量?