搜索
bottom↓
回复: 5

和大家探讨下代码优化,谁有想被优化的代码可以贴上来

[复制链接]

出0入0汤圆

发表于 2012-12-31 18:10:18 | 显示全部楼层 |阅读模式
在对时间要求严格的场合,优化过的代码能够节省出更多的时间,这个是这两天的教训。
感兴趣的兄弟可以将代码片段贴上来,共同锻炼提高。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-12-31 23:03:43 | 显示全部楼层
如果有兴趣研究具体算法的优化,不妨研究研究CRC:
一方面,CRC可以变换的花样有很多,CRC8/16/32或者其它,还有不同的移位方向。
一方面,CRC用到的地方多,属于常用算法,结果容易被复用。
考虑MCU的资源消耗,可以应用CRC的半字节查表法,CRC32的表也就是64个字节而已,一个字节的CRC也就是查两次表。

这个东西有意思的地方在于,
1、核心代码很短,只有几行;但对于不同的CRC长度和方向,需要设计有细微差别的方法。
2、可以体会C代码,编译器,指令集甚至CPU架构之间的互动。

比如,CRC16-XModem算法,这里是该CRC的具体参数:
CRC16;按Bit操作时,数据从LSB移入,从MSB移出(MSB First);CRC多项式0x1021;CRC寄存器初值:0x0000;CRC计算结果XOR 0x0000。

出0入0汤圆

发表于 2012-12-31 23:18:52 | 显示全部楼层
撸主看过<hacker's delight>这本书吗?

出0入0汤圆

发表于 2012-12-31 23:21:46 | 显示全部楼层
dr2001 发表于 2012-12-31 23:03
如果有兴趣研究具体算法的优化,不妨研究研究CRC:
一方面,CRC可以变换的花样有很多,CRC8/16/32或者其它 ...

CRC算法,可以参考这篇文章:
http://www.hackersdelight.org/crc.pdf

出0入0汤圆

发表于 2012-12-31 23:34:55 | 显示全部楼层
i55x 发表于 2012-12-31 23:21
CRC算法,可以参考这篇文章:
http://www.hackersdelight.org/crc.pdf

呵呵,CRC我已经很熟悉了。你提供的这个文章对于CRC算法的介绍十分的粗略,尤其是软件算法实现的部分。

对于CRC本身的介绍以及CRC基本算法的推导,我还没有看到过比“A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS”更好的资料。
参考地址是:http://www.ross.net/crc/download/crc_v3.txt
尤其是15. A Parameterized Model For CRC Algorithms,对于确定所使用的CRC算法是一个非常重要的章节;目前很多代码都基于这个描述确定所使用的CRC算法。

当然,对于多表的递推查表法(不是严格的名称,似乎也没人起名字),我还没看到相关详细的文档介绍,但是了解了基本算法原理后不难推出来,需要一点点时间就行。

需要特别注意的是,就算是使用了查表法,依然有可能针对具体的CRC算法进一步进行优化。
别看查表法的核心代码可能只有一行,但也是对应了好几条汇编的,少一条就是不少的性能提升。

出0入0汤圆

 楼主| 发表于 2013-1-1 08:37:41 | 显示全部楼层
i55x 发表于 2012-12-31 23:18
撸主看过

没有看过,回头学习一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 21:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表