有关C++大数据快速写的问题

mh20008 2017-03-13 09:50:37
各位大神:
平台:VS2013,MFC
从采集卡每秒采集到大约2M的数据,需本地化存储,有没有什么方案,可以实现这个大数据的快速存储?
谢谢!
在线等!
...全文
346 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2017-03-13
  • 打赏
  • 举报
回复
引用 3 楼 mh20008 的回复:
每秒从采集卡读取到20W个点,根据这20W点循环画曲线的同时,把这20W的存储到本地文件, 不加存储文件功能,画曲线顺畅,加上存储后,就有延时,CPU占用到20%左右
呐,就象我上面提到的,现在的sata硬盘,2M/S的数据量写入绰绰有余。 所以首先要确定时间浪费在哪。 就你的表述,如果本来画线消耗900ms,现在加上存储只要消耗超过100ms就会感到延迟了,这种情况觉得问题出在哪呢?
wanghui0380 2017-03-13
  • 打赏
  • 举报
回复
额,分步呗,既然不加存储就快,那就不加存储让绘图优先
存储来不及,那就来不及,慢慢存呗。不一定非要存储和绘图同时运行。存储可以慢慢存。

实际上现在多数的方案是跟你反的,采集先入分布式存储,绘图则用spark一类的玩意实时挖掘
mh20008 2017-03-13
  • 打赏
  • 举报
回复
每秒从采集卡读取到20W个点,根据这20W点循环画曲线的同时,把这20W的存储到本地文件, 不加存储文件功能,画曲线顺畅,加上存储后,就有延时,CPU占用到20%左右
Poopaye 2017-03-13
  • 打赏
  • 举报
回复
2M/S也就是Class 2 SD卡的速度,更本买不到 古老的pata硬盘都有100M
Poopaye 2017-03-13
  • 打赏
  • 举报
回复
你用的什么垃圾硬盘,2M/S的数据都写不了?
mh20008 2017-03-13
  • 打赏
  • 举报
回复
二进制,一次写入,可以满足速度要求
mh20008 2017-03-13
  • 打赏
  • 举报
回复
写文件代码如下: while(true) { WaitForSingleObject(g_hEvent, INFINITE);//事件每隔秒激活 ofstream outfile; char filename[50]; sprintf(filename,"Trace_data_%d.txt", j+1); outfile.open(filename); double* dataPerRecordIn = new double[ActualPoints];//ActualPoints==2000000 for (int point = 0; point <ActualPoints; ++point) { dataPerRecordIn [point] = pData[int(pFirstValidPoint) + point] * Factor + Offset; outfile << dataPerRecordIn [point] << ';' ; } SendMessage(phWnd,WM_IVICARD_DATA, (WPARAM)(dataPerRecordIn ), ActualPoints);//draw curve message delete[] dataPerRecordIn ; outfile.close(); SetEvent(g_hEvent); Sleep(100); } 麻烦看下的方式是否合理?
by_封爱 2017-03-13
  • 打赏
  • 举报
回复
存储什么的我不知道.. 不过我听到LZ说
引用
1秒画20W个曲线顺畅
我到是挺有兴趣的... 给我画一下看看被?

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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