1
gainsurier 2021-03-15 20:33:12 +08:00 via iPhone
python -> c++
Excel -> 时序库 |
2
HITMengbin OP @gainsurier 暂时换不到 C++l ,现在也在考虑换到数据库来弄了
|
3
rqrq 2021-03-16 02:24:58 +08:00
必须要实时吗,缓冲两秒行不行
|
4
dayeye2006199 2021-03-16 04:38:53 +08:00 1
设备和 UI 的通讯之间,可以接一套 kafka 之类的消息队列。设别发送信息到 kafka 上,UI 侧订阅信息,刷新界面;保存到 excel 可以单独起一个进程,订阅同样的 kafka 主题,处理之后写入 excel 。
|
5
supermoonie 2021-03-16 07:27:36 +08:00
不用每一次都展示在界面上吧,人的眼睛反应时间好像在 300ms 左右,10us 刷新一次也太快了。。。试试先接收,然后批量展示保存呢
|
6
levelworm 2021-03-16 08:10:16 +08:00 1
我觉得楼上哥们说的很好,你得先看看真实需求是什么样子。是需要收集所有数据+展示所有数据,还是收集所有数据+展示部分数据,或者是收集部分数据+展现部分数据。
|
7
HITMengbin OP @supermoonie 倒也不用 10us 刷新一次,所以现在的想法是先保存到数据库再刷新,10us 这个速度太快了,显示出来也没必要,人看不出来,主要是看能不能完全保存下来
|
8
HITMengbin OP @levelworm 哥们说的是,在 us 级的速度时,收集全部数据+展示部分数据或者干脆不展示
|
9
supermoonie 2021-03-16 09:46:26 +08:00 via iPhone
@HITMengbin 既然展示的时间间隔宽松了,也没必要全都保存,100ms 保存一次或者取单位时间内的均值或者中位数保存应该也可以
|
10
HITMengbin OP @supermoonie 要求 100us 级别的必然全部保存,后续数据分析
|
11
ch2 2021-03-16 10:32:11 +08:00 1
这个问题跟数据库压根没关系,是你的操作得分 batch 来
UI 方面你只要保证够 60 帧就行了,再高用户是感受不出来的。10us 刷新一次=100000fps,远远高于实际所需。正确的做法是,用限流器的思想,每 10ms 刷新一次,这样你也有 100fps 了 然后自动保存数据是每隔 10 秒保存到 excel 文件里,如果数据量上百兆的话,磁盘 IO 也会花很久时间的 你并不需要实时就把数据显示到界面或者保存到文件,攒够一定的 batch_size 再更新一次才对 |
12
no1xsyzy 2021-03-16 10:33:16 +08:00
吃了问题描述不清的亏
是你接收不及时被丢弃了吗? 是否考虑模型视图隔离( MVC 的 M 和 V 隔离啊) 你如果每到一个包都显示,修改界面花的时间就不止 10us 。 |
13
HITMengbin OP @no1xsyzy 是接收不及时,缓存满了之后后续的就会丢失
现在就是想直接分开,估计比较麻烦 |
14
u823tg 2021-03-16 13:31:59 +08:00
看你描述最主要的是 100us 保存一次,显示根本就不用考虑。 那个时间间隔的 ui 刷新是钛合金眼吗。 直接把问题简化成 100us 保存一次。
|
15
HITMengbin OP @ch2 老哥这方法我可以试试看
|
16
HITMengbin OP @u823tg 哈哈哈,是的,超快速度的后期就只考虑保存,不显示了
|
17
u823tg 2021-03-16 15:03:49 +08:00
@HITMengbin #16 觉得最主要的是不丢数据,开个进程接收数据,然后通过管道扔给另一个进程去处理保存操作去。
|
18
HITMengbin OP @u823tg 是的,超短时间的不丢数据就成了。目前在试的是存入数据库先
|