ChatGPTにローカルストレージ速度を簡易計測するPythonコードを書いてもらった

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からの回答にあるように、あくまで参考としての値ですね。