测试的脚本有 2 个文件,bash 脚本创建将来要读的文件,a.py 脚本进行读写的测试,b.py 脚本空载对比.
create_files.sh
for i in {0..1000}; do dd if=/dev/zero of=$i bs=1M count=1; done
a.py
import threading
import time
def test(fn):
file = open(str(fn), "rb")
bytes = file.read(1)
file.close()
# print(fn, len(bytes))
def foo():
pass
if __name__ == "__main__":
ts = list()
start_time = time.perf_counter ()
for i in range(1000):
ts.append(threading.Thread(target=test, args=(i%1000,)))
# ts.append(threading.Thread(target=foo))
ts[-1].start()
for t in ts:
t.join()
end_time = time.perf_counter ()
print(end_time - start_time)
b.py
import threading
import time
def test(fn):
file = open(str(fn), "rb")
# bytes = file.read(1) 与 a.py 相比就仅仅注释了这一句
file.close()
# print(fn, len(bytes))
def foo():
pass
if __name__ == "__main__":
ts = list()
start_time = time.perf_counter ()
for i in range(1000):
ts.append(threading.Thread(target=test, args=(i%1000,)))
# ts.append(threading.Thread(target=foo))
ts[-1].start()
for t in ts:
t.join()
end_time = time.perf_counter ()
print(end_time - start_time)
在机械硬盘,固态上以及空载的结果分别是 0.07257, 0.07181, 0.0668.二者的差距微乎其微.
我了解到 7200rpm 的机械硬盘随机 4k 的速度大概在 0.5MB 左右.[https://superuser.com/questions/1595841/very-slow-random-read-write-on-hdd]
根据我的测试可得 4kB * 1000 / (0.07257s - 0.0668s) = 693240.901 KB/s [滑稽] 小弟我疑惑万分, 不知是不是目前的测试仍然在硬盘的缓存之上,所以测不出实际性能,还是其他什么原因.希望有知晓老哥的提点一二.