하드 드라이브의 벤치마킹을 시도하고 있습니다. 이는 대기 시간 (ms)과 처리량 (MB/s)을 계산하는 것입니다. 그렇게하기 위해 파이썬 함수 f.write의 실행 시간을 측정하고 싶습니다. 내가 필요한 것은 정확하게 x 바이트를 내 파일에 쓰는 것이다. 은 내가 사용하여 내 파일을 열 필요가 있음을 이해Python - Benchmarking Disk - 정확히 x 바이트를 파일에 작성하십시오.
f = open(file_name, 'wb')
그럼 내가 뭘
for i in range(blocksize)
f.write(b'\xff')
Howewer는, 내가 처리량 (MB/s의)에 대한 취득 결과가 너무 낮습니다. 대기 시간이 올바른 것처럼 보입니다. 그래서 내가 추론 한 것은 이전 라인을 할 때 실제로 파일에 1 바이트 이상을 쓰고 있는데, 1 바이트를 포함하는 문자열을 쓰고 있습니다 ... 그 객체는 실제로 파이썬에서 크기가 없다는 것을 알고 있습니다. 하지만이 문제를 해결할 수있는 방법이 있습니까?
편집 여기에 새로운 코드가 있습니다. 이제 결과가 알기 쉽지 않게 너무 높아졌습니다! 내 디스크의 쓰기 제한은 100MB/s 여야하지만 결과는 10 배 빠릅니다. 뭐가 문제 야 ? 수입 SYS
f = open("test.txt",'wb+')
def file_write_seq_access(blocksize):
chunk = b'\xff'*4000
for i in range(blocksize//4000):
f.write(chunk)
if __name__ == '__main__':
start_time = time.time()
file_write_seq_access(int(sys.argv[1]))
stop_time = time.time()
diff = stop_time - start_time
print diff, "s"
print (int(sys.argv[1])/diff),"B/s"
무엇을 당신의 타이밍으로 했습니까? time.time()? –
알고있는 한, 척의 크기를 파일 시스템 블록 크기와 같게 할 수 있습니다. 얼마나 큰지 잘 모르겠다면 4kb는 종종 좋은 추측입니다. – Blckknght
나는 VM에서 리눅스를 돌리고 있는데, 파일 시스템 블록 크기는 윈도우 중 하나인가 아니면 리눅스 중 하나인가? VM을 실행하면 제 타이밍의 정확성에 부작용이있을 수 있다고 생각합니까? –