大数据量、高速数据读取和写入如何实现

wxf54318 2018-06-20 08:43:56
采集设备每秒产生几百个数据,要采集很长时间,需要把获取的数据写入EXCEL文档。
目前采用VECTOR数组方式存储获取的采集数据只能采几分钟缓冲区就满了,而且是单线程。

请各位大侠给点意见,如何如何保证读写速度和效率要求?


...全文
1518 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sichuanwww 2018-06-22
  • 打赏
  • 举报
回复
几百个数据的单位是什么?
几十兆的速度用双缓冲,多线程搞定是没有问题的。
worldy 2018-06-21
  • 打赏
  • 举报
回复
引用 6 楼 wxf54318 的回复:
[quote=引用 3 楼 worldy 的回复:]
为什么要写入excel文档?
你使用一个大的缓冲区,往里填,这是效率最高的方式,缓冲区满就写入到文件

可以用CreateFileMapping使用内存映射文件吗[/quote]

当然可以,但是通过CreateFileMapping的相关机制保存数据其效率总比不上直接存内存,你可以试试,效率满足要求,有适当的余量,就可以
丁劲犇 2018-06-21
  • 打赏
  • 举报
回复
几百个数据的单位是什么?如果几百字节,那是太少的数据了。

现在一般磁盘落盘,用SSD基本就是几百兆B/秒。如果数据量很大,不要用文本格式。建议用二进制格式存储raw数据。如果更大数据量,需要SSD盘阵或者专用的设备了。

如果只是几百个小数据,那就存为CSV,逗号分隔即可。里面有文本,带“,”的话,考虑做替换。
叶恭介叶恭介 2018-06-21
  • 打赏
  • 举报
回复
几百个数据?一秒几百个字节?
wxf54318 2018-06-20
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
建议使用纯文本模式的CSV格式, 简单高效
之前是CSV,需求是要直接保存成EXCEL
zgl7903 2018-06-20
  • 打赏
  • 举报
回复
建议使用纯文本模式的CSV格式, 简单高效
wxf54318 2018-06-20
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
为什么要写入excel文档?
你使用一个大的缓冲区,往里填,这是效率最高的方式,缓冲区满就写入到文件

可以用CreateFileMapping使用内存映射文件吗
向立天 2018-06-20
  • 打赏
  • 举报
回复
我以前做过类似的东西 当时用的是随机文件 你要是非要存excel可以再转化一下
xiaohuh421 2018-06-20
  • 打赏
  • 举报
回复
不管怎么处理, 总会有瓶颈的. 一般双缓冲就够了. 比如有A,B两个缓冲区 A缓冲区满了, 就开线程写文件 接收线程写入B缓冲. B缓冲满了: 如果A已经写入文件完成, B就开始写入文件, 接收放入A. 如果A仍然在写文件, 那么就等待. (这种情况下, 磁盘就是瓶颈了,再怎么加缓冲区都不够)
worldy 2018-06-20
  • 打赏
  • 举报
回复
为什么要写入excel文档? 你使用一个大的缓冲区,往里填,这是效率最高的方式,缓冲区满就写入到文件

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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