我在h5文件中存储了一个10000*5000的矩阵,其值为1和-1。
h5open("/my path/data.h5", "w") do file
write(file, "a", a) # alternatively, say "@write file A"
它花费了400 MB。这合理吗?
这正是您所期望的,前提是这些是要存储的Float64
数字。每个Float64
数字占用64位=8个字节。10000*5000*8=4亿字节=400 MB。
如果您想减少大小,还可以考虑将值生成并存储为另一种类型,如Int8
(占用Float64
的1/8空间)。请记住,如果您将矩阵中的任何内容与另一种类型的对象相加、相乘等,则Julia将自动转换类型以匹配。如果您多次执行此类操作,从而导致多次转换,则此类转换将导致巨大的性能损失。但是,您仍然可以将其原样存储,然后在加载后重新转换。