Pythonディスクのパフォーマンスをテストする方法
2576 ワード
この例では、Pythonがディスクのパフォーマンスをテストする方法について説明します.皆さんの参考にしてください.具体的には以下の通りです.
このコードは次のように動作します.
create 300000 files (512B to 1536B) with data from/dev/urandom rewrite 30000 random files and change the size read 30000 sequential files read 30000 random files delete all files sync and drop cache after every step
bench.pyコードは次のとおりです.
ここで述べたことが皆さんのPythonプログラム設計に役立つことを願っています.
このコードは次のように動作します.
create 300000 files (512B to 1536B) with data from/dev/urandom rewrite 30000 random files and change the size read 30000 sequential files read 30000 random files delete all files sync and drop cache after every step
bench.pyコードは次のとおりです.
#!/usr/bin/python
# -*- coding: utf-8 -*-
filecount = 300000
filesize = 1024
import random, time
from os import system
flush = "sudo su -c 'sync ; echo 3 > /proc/sys/vm/drop_caches'"
randfile = open("/dev/urandom", "r")
print "
create test folder:"
starttime = time.time()
system("rm -rf test && mkdir test")
print time.time() - starttime
system(flush)
print "
create files:"
starttime = time.time()
for i in xrange(filecount):
rand = randfile.read(int(filesize * 0.5 + filesize * random.random()))
outfile = open("test/" + unicode(i), "w")
outfile.write(rand)
print time.time() - starttime
system(flush)
print "
rewrite files:"
starttime = time.time()
for i in xrange(int(filecount / 10)):
rand = randfile.read(int(filesize * 0.5 + filesize * random.random()))
outfile = open("test/" + unicode(int(random.random() * filecount)), "w")
outfile.write(rand)
print time.time() - starttime
system(flush)
print "
read linear:"
starttime = time.time()
for i in xrange(int(filecount / 10)):
infile = open("test/" + unicode(i), "r")
outfile.write(infile.read());
print time.time() - starttime
system(flush)
print "
read random:"
starttime = time.time()
outfile = open("/dev/null", "w")
for i in xrange(int(filecount / 10)):
infile = open("test/" + unicode(int(random.random() * filecount)), "r")
outfile.write(infile.read());
print time.time() - starttime
system(flush)
print "
delete all files:"
starttime = time.time()
system("rm -rf test")
print time.time() - starttime
system(flush)
ここで述べたことが皆さんのPythonプログラム設計に役立つことを願っています.