2016-07-18 6 views
1

값이 1과 -1 인 h5 파일에 10000 * 5000의 행렬을 저장했습니다.Julia : h5 파일의 크기

h5open("/my path/data.h5", "w") do file 
    write(file, "a", a) # alternatively, say "@write file A" 

400MB가 필요했습니다. 이게 합리적입니까?

+0

10000 * 5000 부울의 행렬 (예 :'rand (Bool, 10000,5000)')을 저장하려고 했습니까? 너이 크기 –

+0

bool을 신고하면 좋을거야, 왜? 하지만 난 진짜 가치가 필요해 !! – vincet

+0

아, 그래. 당신은 1과 -1이라고 말했고 당신은 이것을 bool 매트릭스에 쉽게 저장할 수 있다고 생각했습니다. –

답변

4

정확히 Float64 숫자가 저장되어 있다면 이것이 예상됩니다. 각 Float64 숫자는 64 비트 = 8 바이트를 차지합니다. 10000 * 5000 * 8 = 4 억 바이트 = 400MB.

0

크기를 줄이려면 Int8 (예 : Float64의 1/8을 차지함)과 같은 다른 유형으로 값을 생성하고 저장하는 것이 좋습니다. 그러나 행렬에 다른 유형의 객체를 추가, 곱하는 등의 작업을 수행하면 Julia가 자동으로 해당 유형을 일치하도록 변환합니다. 이러한 작업을 여러 번 수행하면 여러 번 전환하게되므로 이러한 전환은 큰 성능 저하를 초래합니다. 하지만로드 된 후에도 다시 변환 할 수 있습니다.