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