内存搜索
2013-11-28 11:56
141 查看
我这段时间正好涉及到内存搜索问题,有几点感受说明一下:
一、要考虑语言的因素(如VB指针功能太弱,执行效率较低),建议采取C++或MASM32写比较代码。
二、要考虑内存对齐情况,将被查找子串转换为4的倍数的数据(32位机),速度会大幅提升。
三、如果不考虑移植性,可采用MMX、SSE或SSE2指令进行优化,但AMD的CPU不支持。
四、尽量避免使用二次循环语句,速度将呈几级数增加。
在循环体内外判断子串长度,若为1则无需优化,为2-3使用short,4-7使用long,8以上使用double。
比如要查找的子串为"Hello",那么可以首先将"Hello"截为一个4位的子串"Hell",然后转换为一个LONG。再以LONG的类型循环访问目标内存数据,比较二者是否相等,若相等,则为"Hell",然后后再进一步比较是否为"Hello"。
一、要考虑语言的因素(如VB指针功能太弱,执行效率较低),建议采取C++或MASM32写比较代码。
二、要考虑内存对齐情况,将被查找子串转换为4的倍数的数据(32位机),速度会大幅提升。
三、如果不考虑移植性,可采用MMX、SSE或SSE2指令进行优化,但AMD的CPU不支持。
四、尽量避免使用二次循环语句,速度将呈几级数增加。
在循环体内外判断子串长度,若为1则无需优化,为2-3使用short,4-7使用long,8以上使用double。
比如要查找的子串为"Hello",那么可以首先将"Hello"截为一个4位的子串"Hell",然后转换为一个LONG。再以LONG的类型循环访问目标内存数据,比较二者是否相等,若相等,则为"Hell",然后后再进一步比较是否为"Hello"。
相关文章推荐
- win7并没有默认为iis7.0注册wcf服务的svc文件的mime映射。
- 总结下绵阳论坛地方性的有哪些?
- JS代码格式化和语法着色
- 淘宝应对双"11"的技术架构分析
- c#系统命名空间介绍
- J2EE项目中后台定时运行的程序
- Java 动态代理机制分析及扩展,第 1 部分
- 取石子游戏(原创)
- disiti
- kubuntu 13.04 fcitx五笔
- MySQL中的空间扩展
- vs+cocos2d-x 导入第三方库 移植到android
- [C]计算某一天是该年中的第几天
- oracle 学习笔记之循环
- CKEditor 3.6 入门
- hibernate中对大字段处理(Blob&Clob)
- 自定义Adapter步骤
- oracle常用经典SQL查询
- FragmentTabHost
- cobol字符串处理