从文件读取数据问题

hmsuccess 2008-12-26 09:00:34
在预处理时对其一个大数据文件(按照固定数据格式存储的)建一个文件内存映射,
正式处理的时候,从文件中一条一条数据读进来,将其转换成原来的格式(再封装起来,比如说每一条数据是一个结构体,将这个结构体先存入vector中,然后将vector放在一个map中),

这种处理方式效率比较低(我需要在较短的时间处理完),后来我尝试使用文件来存储pod类型数据,但是这样
只是在读取一整条记录上比较快,还是需要将每一条记录一一封装放入map中,当数据量比较大时,效率很低

现在我想问的是有没有什么好的办法来解决这个平衡问题
...全文
206 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lann64 2008-12-28
  • 打赏
  • 举报
回复
如果不考虑移植性、放弃部分安全性,是否可以通过强制类型转换实现?

数据格式固定、记录长度固定。
vector中存储指针,指向内存中记录映像,下一个指针只是上一个指针增加固定长度,
这样没有构造、没有复制是否可以实现?
hmsuccess 2008-12-28
  • 打赏
  • 举报
回复
那位高手有好的方法,谢谢
xiaoyisnail 2008-12-27
  • 打赏
  • 举报
回复
up
zzz822163 2008-12-27
  • 打赏
  • 举报
回复
内存文件映射就是用来处理大文件的呀
ecchi 2008-12-27
  • 打赏
  • 举报
回复
在文件中保存时是不是可以连续保存的? 如果是的话应该可以整块地通过vector的_Myfirst指针一次读入.
一块保存若干个单位的数据.
yytlan 2008-12-27
  • 打赏
  • 举报
回复
同意楼上的.
wudeshou82666 2008-12-27
  • 打赏
  • 举报
回复
因为你要操作的是一条条的记录,操作的次数不可能变化的。减少每条数据的操作时间。。。。
参考意见而已
hmsuccess 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ecchi 的回复:]
在文件中保存时是不是可以连续保存的? 如果是的话应该可以整块地通过vector的_Myfirst指针一次读入.
一块保存若干个单位的数据.
[/Quote]
数据是连续的,但是_Myfirst指针可以吗
hmsuccess 2008-12-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oyljerry 的回复:]
内存文件映射,读取大文件效率比较高
vector,可以开始的时候reserve交大空间,防止反复重新分配空间
[/Quote]
如果有10,000,000条数据,一条一条的读取,转换,重新组织结构,那会很慢的,
我只是举了个vector的例子
就呆在云上 2008-12-26
  • 打赏
  • 举报
回复
呵呵
可以用向量,或者链表都可以
oyljerry 2008-12-26
  • 打赏
  • 举报
回复
内存文件映射,读取大文件效率比较高
vector,可以开始的时候reserve交大空间,防止反复重新分配空间
nullah 2008-12-26
  • 打赏
  • 举报
回复
只能 Up
lsd1025 2008-12-26
  • 打赏
  • 举报
回复
唉,我也做过这样的!
先读文件保存到结构体中,再把结构体放到Vector里,处理过程中会改变向量里结构体的成员的值,
最后把向量里的所有结构再保存到文件!我程序中有大量这样的操作,暂时感觉不到慢,不知道是不是量不够大
我认为你这样的操作是不是已经影响到速度了呢?
waizqfor 2008-12-26
  • 打赏
  • 举报
回复
UP下

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧