【发布时间】:2016-06-17 21:26:38
【问题描述】:
在我当前的应用程序中,我每秒将接收超过 2000 帧,每帧包含 1024(通道)*32 位数据。我需要一种将它们存储在数据库或 CSV 文件中的方法。该应用程序不会全天运行,一年 365 天。唯一的目的是测试一些集成电路(可能会运行几分钟)。
我目前正在使用 QT 框架来显示数据,但它也具有数据库功能。也许使用 qt + sqlite...
如何处理此类问题?我应该做一个列= 1(帧号)+ NUMBER OF CHANNEL,并且行数与帧数一样多的表吗?我应该简单地做一个列= 1(帧号)+ 1(通道号)+ 1 通道值的表吗?
写入 CSV 文件会更快更高效吗?我花时间写数据的时间越多(无论是在 CSV 中,还是通过与数据库的交互),图的滞后就越大。我试图保持这个简单,但仍然有效。 (避免多线程、信号量和互斥体)。我有一些实时限制,图表需要是实时的。每 X 帧(可能每 25 帧)图表都会更新,但在每次数据输入时,我都需要将其记录到某个文件或数据库中。
【问题讨论】:
-
您真的需要以编程方式实时交互/显示您的数据吗?听起来您正在尝试获取一些快速数据并对输出进行一些可视化。我推荐一个简单的 CSV 文件,然后您可以将其注入 Microsoft Excel。从那里您可以获得过滤/操作/显示数据所需的所有类似 DB 的功能,而无需为您的测试编写一次性解决方案。这是编写文件的快速/肮脏示例。 [forum.qt.io/topic/16586/how-to-write-csv-file-in-qt/2][1]
-
我真的需要实时显示,因为测试的设备是一些传感器,当我们与之交互时,我们可以直接看到发生了什么。十 我需要记录数据,以便进一步分析。使用热图(如图形)可视化数据,其中值是颜色,通道是垂直的,帧数是水平的
-
最快的方法是以二进制格式将帧流式传输到日志文件。然后你需要以大约 8 Mb/s 的速度写入,即使使用 HDD 看起来也不错。
-
您是否还可以记录您在“与之交互”时所做的事情,以便在后期处理期间同时显示输入和输出?如果没有,向日志数据添加时间戳很有用。由于您的帧率如此之高,只需在文件顶部添加时间戳(或将时间戳放在文件名中),您就可以使用您的采样率计算 CSV 记录中每一帧的时间值。
-
数据直接通过 UDP 流式传输(所以是二进制而不是字符串格式),速度非常快。你在说什么类型的日志? CSV?数据库?文本文件?
标签: c++ database qt optimization