首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++ 怎么快速的读取200MB的数据

2013-11-29 
c++ 如何快速的读取200MB的数据本帖最后由 u012281814 于 2013-11-27 15:26:13 编辑我有200MB的类型为.mat

c++ 如何快速的读取200MB的数据
本帖最后由 u012281814 于 2013-11-27 15:26:13 编辑 我有200MB的类型为.mat的数据,在c++的工程中我按照.mat的数据格式将其读入内存,大约花了半分钟时间。
电脑配置处理器:Core(TM)i5-3470 cpu @ 3.20GHz 3.20GHz 内存:8.00GB 
软件环境 win7 vs2012 c++ 

我的问题的是:
1.有没有更快更好的方式读200MB的数据?
2.将.mat数据转换成二进制数据然后读取会不会更快?(我尝试.mat数据转成二进制后文件变得更大了)          
3..mat数据的读取要依赖matlab API,从使可移植性的角度考虑,是否应该将其转换成一种更通用的格式,具体是什么格式呢?        
4.对于我这种情况是否需要使用数据库,使用数据库能不能提高数据读取的速度?

这个问题让我挣扎了好久,我实在找不到合适的解决方案。希望大家能帮帮我!

PS:第一在论坛里提问,希望以后更多的参与其中,谢谢大家。
PPS:我是一个研究生,做3D人脸重建方向的课题。
[解决办法]
建议用轻量级数据库SQLite(http://www.sqlite.org/)辅助管理。

引用:
我有200MB的类型为.mat的数据,在c++的工程中我按照.mat的数据格式将其读入内存,大约花了半分钟时间。
电脑配置处理器:Core(TM)i5-3470 cpu @ 3.20GHz 3.20GHz 内存:8.00GB 
软件环境 win7 vs2012 c++ 

我的问题的是:
1.有没有更快更好的方式读200MB的数据?
2.将.mat数据转换成二进制数据然后读取会不会更快?(我尝试.mat数据转成二进制后文件变得更大了)          
3..mat数据的读取要依赖matlab API,从使可移植性的角度考虑,是否应该将其转换成一种更通用的格式,具体是什么格式呢?        
4.对于我这种情况是否需要使用数据库,使用数据库能不能提高数据读取的速度?

这个问题让我挣扎了好久,我实在找不到合适的解决方案。希望大家能帮帮我!

PS:第一在论坛里提问,希望以后更多的参与其中,谢谢大家。
PPS:我是一个研究生,做3D人脸重建方向的课题。

[解决办法]
如果200M数据不是同时需要的话,可以延缓读入,随用随取。
另外,异步读入的话用户的体验会好些。
[解决办法]
使用内存映射,将整个文件映射到内存中;然后再做文件的解析处理。
[解决办法]
内存映射我记得需要有些条件的
而且IDE硬盘上的数据总归是要通过磁头去读的即使实现mmap的功能
也是快不了吧,咋整呢

 

引用:
你好lianshaohua,也听别人说过内存映射。。但具体没试过。谢谢你的回答。 

[解决办法]
可不可以不要一次读那么多,分多次来读!分多次来读,内存申请小一点!
[解决办法]
加载200MB数据用半分钟不算慢了,如果你需要的是一次性加载200MB的所有数据(比方用于渲染模型),直接读文件是最快的,如果你需要的是反复多次检索其中的个别物件(例如数据挖掘),就需要存到数据库里,那样会比每次检索个别物件都加载整个文件快很多,也节省内存。
[解决办法]
如果是想随机访问你200M文件的内容,那用内存映射即可,快速定位,低内存
[解决办法]
引用:
你好lianshaohua,也听别人说过内存映射。。但具体没试过。谢谢你的回答。 

可以试试;不过如果你不是一次处理200MB的数据,没必要一下加载到内存,而是一个线程读数据,交给业务线程处理,然后给界面反馈

热点排行