关于写变量的速度问题
时间:12-13
整理:3721RD
点击:
以前做数据采集,并且对采集的数进行实时的计算,由于对buffer读入和写出的速度不匹配,致使buffer总是溢出。
所以无奈之下我选择了离线计算,也就是先将采集上来的数保存在变量中,然后在接下来再将变量中的数取出进行计算,但是却发现写内存却更容易使buffer溢出,比直接进行计算还费时,(我的计算程序就是一个对50K数字信号解调的过程)。
请各位大侠指点,我还能有其他更好的办法么?我已经牺牲了实时性了……
所以无奈之下我选择了离线计算,也就是先将采集上来的数保存在变量中,然后在接下来再将变量中的数取出进行计算,但是却发现写内存却更容易使buffer溢出,比直接进行计算还费时,(我的计算程序就是一个对50K数字信号解调的过程)。
请各位大侠指点,我还能有其他更好的办法么?我已经牺牲了实时性了……
你的这两种方法在实时性上有什么区别么?
离线计算应该是把原始数据保存到文件中,采集过程结束后再计算吧
你现在所谓的离线计算只不过是人为的在第一种方法中添加了一些增加系统开销的操作
所以效率当然就更低了
离线计算:
那有什么更好的办法么?
你发的图片看不到
现在的问题似乎是你后面的数据处理速度跟不上前面的采集速度
对于buffer来说,进得多,出得少,自然就会溢出了
一种方法是降低采样率,另一种方法是提高信号处理效率或者提高系统配置
系统对采样率要求很高,不能降低。
如果我仍然采用离线计算的方法,应该怎样是缓存区不溢出呢?
我总认为向变量里面写数据的速度不应该比用这些数据进行解调计算要慢啊!始终想不通
还有不是将数据保存到文件(硬盘)中,而且放在变量(内存)中。
如果你的数据总的采集量不大的话,比如采集1秒钟就停下来,估计可以放到内存中
如果是长时间的采集,只能是放到硬盘上了
我需要计算10″,也就是说要50M个数据。提前设置好变量的大小,只是写变量的速度跟不上。只是因为数据量太大了么?如果存在硬盘上速度更不行了!
50M的话,在内存空间开辟一段内存映射文件吧
这个我不大懂,能说的详细一些么?
如果你用vc+ms的话,用内存映射文件,相当于把一段内存空间当作一个文件来用
用labview处理这么大的内存,我还不知道怎么办
这样可以提高速度,不让缓存区溢出么?
你把缓冲区里面的数据都读出来,临时存放到一段内存空间,不要计算
等采集结束了再计算不就行了么
我就是这样做的,但是缓存区还是溢出
那就是其他方面的问题了 :(
这种现象正常么?其他方面是指?