`
zuroc
  • 浏览: 1307777 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

读 代码优化 的总结

    博客分类:
  • C++
阅读更多

系列文章见

http://blog.csdn.net/housisong<wbr></wbr>/





= 读代码优化-之-Base64编码函数 的总结 =



常用技巧



1.查表替代计算,更大的表

说明:表太大可能不能装入CPU的一级缓存,所以函数运行可能会更慢(常用值8K)

实例:

那么对于这样的代码: output[0]=to_base64char(input[0]>>2);

可以化简为: output[0]=BASE64_CODE[input[0]>>2];



前面的代码中6bit的数据查表可以得到8bit的输出数

那么可以构造一个更大的表,一次使用12bit的数据查表得到16bit的输出数据!



2.多核优化

说明:效果比较明显

实例:

Base64编码函数其实很容易实现并行算法,把数据切割成几段让多个CPU执行就可以了;

速度对比

// base64_encode1_asm   1258

// base64_encode2        702



汇编/平台相关技巧



1.在当前的32比特CPU上一次写入4字节将获得更好的性能;而输入数据的地方,可以先转化成32比特整形数据再做各种复杂的位运算有利于编译器的优化(各个PC平台的差异可能比较大);



2.想法是尽量压缩寄存器的使用,然后多个寄存器就能同时执行多路,增加了指令的并发能力;



3.使用sse和sse2的写缓存优化

说明: 优化写缓冲需要满足的条件是写入的数据量比较大或者需要写入的数据不需要很快就访问,

从而避免了写入的数据被CPU自动缓冲而"污染"缓存;(如果条件不满足,“优化”反而会变成劣化)



= 读代码优化-之-优化条件分支  的总结 =



1.尽量简化循环中分支条件,提高预测的命中率

比如:

一些图像处理算法里(比如模板运算\卷积运算\形态学运算等),经常需要判断边

界像素点,进行特殊处理;可以考略的优化方案是把边界区域和内部区域分开处理;



2.将出现几率高的分支优先处理,从而提高预测准确率



3.合并多个条件来减少条件分支

 如: if ( (a0==0) && (a1==0) && (a2==0) ) ...

 可以改写为: if ( (a0|a1|a2)==0 ) ...



4.一些比较hack的写法,主要是利用位运算来取消分支

针对不同类的数据生成不同的掩码数据,然后让原数据和掩码参与运算得到想要的结果,从而移除分支;

分享到:
评论

相关推荐

    如何让代码更可读-读《编写可读代码的艺术》读书笔记.pdf

    《编写可读代码的艺术》是一本致力于提升代码可读性的书籍,强调了代码可读性在软件工程中的重要性。代码可读性不仅关乎程序员之间的沟通效率,还直接影响到软件的维护成本。以下是对书中一些核心观点的提炼: 1. *...

    java代码优化

    总结起来,Java代码优化是一个全面的过程,涉及到代码质量、设计模式、重构、内存管理、并发处理等多个方面。通过阅读和实践上述书籍中的知识,开发者可以不断提升自己的编程技能,编写出更高效、更易维护的Java代码...

    JAVA代码规范及快捷键优化.docx

    以下是关于JAVA代码规范和快捷键优化的知识点总结: 一、JAVA代码规范 1. 空格规范:在编写JAVA代码时,需要遵守统一的空格规范,以使代码看上去清晰易读。例如,在数组初始化时,需要使用统一的空格格式。 2. ...

    数学建模各种代码总结

    对于大规模数据或复杂计算,代码优化至关重要。使用并行计算、数据结构优化等技术可以提升效率,如Python的`multiprocessing`库。 10. **代码管理与版本控制**: 使用Git进行版本控制,确保代码的可追踪性和团队...

    机器学习算法 的贝叶斯超参数优化实现_Crystal_代码_下载

    总结来说,这个项目提供了使用Crystal语言实现的贝叶斯超参数优化算法,可能包括了对一些特定问题(如2048游戏等)的解决。用户可以通过下载并阅读README.md文件来了解如何运行和应用这些代码,同时,SFML示例可能...

    DS1302模块代码方法总结

    标题“DS1302模块代码方法总结”指的是在单片机编程中,与DS1302实时时钟芯片相关的编程技术。DS1302是一款常用的串行实时钟,广泛应用于各种嵌入式系统中,以提供精确的时间戳功能。在蓝桥杯等竞赛或项目开发中,...

    代码整洁之道读书分享.zip

    这本书强调了代码质量的重要性,尤其是整洁、可读和易于维护的代码对于项目成功的关键作用。在“逐步改进”和“JUnit内幕”这两章中,作者深入探讨了如何通过一系列实践步骤来提升代码质量,并介绍了单元测试的重要...

    前端代码规范总结(3篇).zip

    本文将深入探讨HTML、CSS和JavaScript这三种主要前端技术的代码规范,旨在提供一套综合的指导原则,帮助开发者编写更可读、可维护和可扩展的代码。 首先,我们来谈谈HTML规范。HTML作为网页的基础结构语言,其规范...

    读懂IL代码.docx

    总结来说,理解和掌握IL代码能够增强.NET开发者对程序运行时行为的洞察力,对于优化和调试代码以及深入理解.NET框架具有重要意义。通过学习IL,开发者能够更好地控制和利用.NET平台的特性,提升软件开发的专业水平。

    PHP程序优化总结借鉴.pdf

    PHP 程序优化总结借鉴 PHP 程序优化是提高 PHP 程序执行速度和效率的重要环节。下面总结了一些 PHP 程序优化的经验和技巧: 一、避免在大的数组上使用 in_array() in_array() 函数在大的数组上使用会非常消耗...

    Mysql数据库优化总结

    MySQL数据库优化是一个涉及多方面的复杂任务,主要包括硬件配置优化、数据库设计优化、软件优化和配置优化。以下是对这些方面详细的知识点说明: 1. **硬件配置优化**: - **CPU选择**:选择多核、高主频的CPU,以...

    matlab开发-协同成纤维细胞优化代码

    总结来说,这个项目提供了关于协同成纤维细胞优化算法的MATLAB实现,为科研和工程领域的优化问题提供了一种新的工具。通过深入研究`Introduction to SFO with Matlab code.doc`文档和分析`SFO_Matlab.m.txt`的源代码...

    程序的循环优化方法PPT课件.pptx

    理解并掌握这些循环优化方法对于编写高效、并行化的代码至关重要,尤其在现代计算环境中,充分利用多核处理器和硬件特性已经成为提升程序性能的常规手段。通过深入学习和实践,开发者能够创建出运行更快、资源利用率...

    [HTML] Prettify 代码高亮使用总结 实例代码

    HTML中的Prettify是一款强大的代码高亮工具,尤其在网页中展示源代码时,它可以将代码格式化并突出显示关键部分,使得代码更易读、更美观。Prettify是Google开发的一个开源项目,它支持多种编程语言的语法高亮,并且...

    python opencv自动识别电表读数(识别LED数字)附源代码

    在本教程中,我们将深入探讨如何使用Python和OpenCV库来实现自动识别电表读数,特别是LED数字显示。OpenCV是一个强大的计算机视觉库,它提供了丰富的功能来处理图像和视频,非常适合进行数字识别这样的任务。 首先...

    Pixhawk源码总结.rar_pixhawk_pixhawk代码解读_pixhawk源码_开源飞控

    本资料“Pixhawk源码总结.rar”包含了对Pixhawk核心代码的深入解析,帮助我们理解其内部机制和运行原理。以下是根据标题、描述和标签整理出的关键知识点: 1. **Pixhawk概述**: - Pixhawk不仅是一个硬件平台,还...

    Java利用策略模式优化过多if else代码

    * 使得代码更加易读和易懂 5. 实现策略模式的步骤 要实现策略模式,需要按照以下步骤进行: * 定义策略接口 * 实现具体策略类 * 创建环境类 * 在环境类中使用策略模式来调用具体策略类 6. 策略模式的应用场景 ...

    android应用性能优化最佳实践读书笔记

    6. **代码优化**:遵循良好的编程习惯,如避免使用冗余的计算,减少嵌套循环,合理使用Java的内联、泛型和枚举等特性,以及利用编译器优化选项。 7. **资源优化**:压缩图片,使用WebP格式,对XML布局进行瘦身,...

    JavaScript性能优化的小知识总结共23页.pdf

    这份"JavaScript性能优化的小知识总结共23页.pdf"涵盖了多个关键领域,旨在帮助开发者深入理解如何提升JavaScript代码的运行效率。 首先,JavaScript性能优化的一个重要方面是代码结构。良好的编程习惯,如避免使用...

    程序员编程好习惯总结

    本文总结了15条程序员编程的好习惯,涵盖了编程设计、代码编写、版本控制、代码优化、代码维护等方面。 1. 编程之前需进行设计 在开始编程之前,需要对要编码实现的解决方案有一个正式的或粗略的设计,避免在没有...

Global site tag (gtag.js) - Google Analytics