ChatGPTにローカルストレージ速度を簡易計測するPythonコードを書いてもらいました。レンタルサーバとか仮想環境で、ストレージの読み/書きがどの程度のスピードかをざっくり把握するためです。
指示文(プロンプト):
pythonでストレージ速度を計測するコードを書いてください。
一秒間での書き込み/読み込み容量として表示するようにしてください。
測定用に生成するファイルは、測定後に自動的に削除するように訂正してください。
計測用に生成するファイルサイズは、1MB、10MB、100MBの3種類として、さらにそれぞれ5回づつ計測して、平均をとるようにしてください。
最後に、全ての計測結果の平均を表示するようにしてください。
回答:
import time
import os
def measure_storage_speed(file_path, data):
# 計測回数と結果の初期化
num_measurements = 5
write_speeds = []
read_speeds = []
for _ in range(num_measurements):
# ファイルへの書き込みを計測
start_time = time.time()
with open(file_path, 'wb') as f:
f.write(data)
end_time = time.time()
write_time = end_time - start_time
# ファイルからの読み込みを計測
start_time = time.time()
with open(file_path, 'rb') as f:
read_data = f.read()
end_time = time.time()
read_time = end_time - start_time
# 1秒あたりの書き込み/読み込み容量を計算
write_speed = len(data) / write_time / (1024 * 1024) # MB/s
read_speed = len(read_data) / read_time / (1024 * 1024) # MB/s
# 計測結果をリストに追加
write_speeds.append(write_speed)
read_speeds.append(read_speed)
# ファイルを削除
os.remove(file_path)
return write_speeds, read_speeds
# 使用例
file_path = 'test_file.txt'
data_sizes = [1024 * 1024, 10 * 1024 * 1024, 100 * 1024 * 1024] # 1MB, 10MB, 100MB
num_measurements = 5
all_write_speeds = []
all_read_speeds = []
for data_size in data_sizes:
data = b'Hello, World!' * (data_size // len(b'Hello, World!'))
write_speeds, read_speeds = measure_storage_speed(file_path, data)
all_write_speeds.extend(write_speeds)
all_read_speeds.extend(read_speeds)
# 全計測結果の平均速度を計算
average_write_speed = sum(all_write_speeds) / len(all_write_speeds)
average_read_speed = sum(all_read_speeds) / len(all_read_speeds)
# 結果を出力
print(f'平均書き込み速度: {average_write_speed} MB/s')
print(f'平均読み込み速度: {average_read_speed} MB/s')
このコードでは、書き込み時間と読み込み時間から1秒あたりの書き込み/読み込み容量を計算しています。計算結果はMB/sで表示されます。ただし、これはあくまで単純な計算であり、実際のストレージ速度とは異なる場合があります。より正確な計測を行うには、専門のツールやベンチマークソフトウェアを使用することをおすすめします。
結果:
下記のように計測できました。比較用にベンチマークソフトでの結果も合わせてキャプチャーしてます。
GPTからの回答にあるように、あくまで参考としての値ですね。