为什么使用hdf5存取文件,速度却比使用csv存取文件的速度还慢?

文章讲述了作者在处理大规模数据集时遇到的效率问题,原本使用CSV存储和提取数据已经非常慢,尝试切换到HDF5格式后,发现速度反而更慢。原因是数据类型为双精度浮点数,占用资源较多。改为单精度浮点数后,存储和读取速度显著提升,HDF5的优势得以体现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据集大小:
(200000* 9* 22+200000* 10* 11)* 36+(250000* 9* 22+250000* 10*11)*3
个数值
最初是用csv存这些数的,存的过程耗费将近整整一天,还是在服务器和台式机同时在跑的情况下存的,在取数据的时候数据也迟迟取不出来。
看别人存这个数据量的时候最多只用了几十秒,百思不得其解为啥我的程序跑得这么慢
为了改变存取数据太慢的情况,我改用hdf5来存取数据。按照常理,hdf5在这么大的数据量中应该表现得比csv好很多,然而结果却是hdf5存取相同数据所花费的时间差不多是csv的1.6倍。
hdf5的表现
相同配置存储相同数据csv的表现
这是为什么?
经过一番搜索+提问,我有了答案:
1、单精度浮点数比双精度浮点数要省时间和空间
2、hdf5存储数值数据比较有效,字符型数据是hdf5的弱点
3、如果数据结构是大量的小数组,是有可能出现hdf5存数据速度比csv慢的(此处感谢@专注算法的马里奥学长的回答

我的数据类型是<class ‘MDSplus.mdsarray.Float64Array’>,双精度浮点数数组,在用hdf5存取的时候很占时间和空间。
我把数据改成单精度浮点数,存取速度一下子快了几百倍,hdf5也比csv快了
修改后的hdf5的表现
修改后的csv的表现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值