求助字节数组逐一比较如何优化?
做一个数据采集系统,每帧数据数据量相同,大概1000多个字节,采集频率现在400HZ,后面需要提高到600~800HZ。数据采集过来,有两个数组比较操作:
1,跟上一帧数据逐字节比较,并合并;如果某一个字节值大于上一帧数据相同位置的字节值,就取较大的值。
2,跟一个阀值比较,如果小于就置该位置的字节为0,否则就减去阀值。(大于阀值的很少,最多十几个)。
有一个想法,就是转换成32位无符号数来比较,就是一次比较4个字节。但是不知道怎么实现。{:sad:}
请教各位大虾,上面两个有没有什么优化办法呢? 还没有验证目前的方式效率如何,就先考虑优化?
很多时候最先的方法有可能就是最正确的方法 本帖最后由 hhxb 于 2013-11-16 22:18 编辑
“转换成32位无符号数来比较”
这个思路肯定是错的,32处理器用共用体就行了。 如果是32位的处理器,可以在读取内存时一次性读出32位,分别对4个字节进行比较。主要应该是对内存读取效率的优化吧,毕竟在这里内存数据读取占用的时间太长。 zhuzaixingfu 发表于 2013-11-16 21:49 static/image/common/back.gif
如果是32位的处理器,可以在读取内存时一次性读出32位,分别对4个字节进行比较。主要应该是对内存读取效率 ...
忙着干其他的活,把这个给忘了,几天没上论坛。感谢几位老大的意见。
优化就是想优化内存读。
我的想法是,ARM里面32位减法运算的时候,如果在某一个寄存器里面设置每个字节借位标志,并且C语言可以读取这个寄存器的话,就可以比较显著的提高效率了。这个就需要熟悉ARM汇编了。
还请各位老大提供些意见。 另外就是减少在循环中的分支if,如图,就是有点小麻烦 zhuzaixingfu 发表于 2013-11-19 22:56 static/image/common/back.gif
另外就是减少在循环中的分支if,如图,就是有点小麻烦
xingfu兄的这两条语句很有创意{:victory:}
准备先按照这两条语句来修改下!
另外继续期待其他的优化意见,看能否有更加快速的算法? 学习了,谢谢!
页:
[1]