`
isiqi
  • 浏览: 16490520 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

在关键路径上,编码需谨慎

 
阅读更多

将大小为1G的src缓冲区中的数据复制到dst缓冲区中,并且跳过所有空格。

下面两种循环风格,哪一种你更喜欢?

哪种效率更高呢?Try it~

-----------------------------------

在关键数据路径上,如果需要对每一字节都进行检查,那么使用的检查方法需要格外谨慎。在上例中,I直接检查src[i]是否为空格,II采用了isspace函数来检查,直接检查只需要一次比较,而函数调用则需要一次call和一次比较(isspace函数内部)。从理论上分析,后者速度肯定要慢,实际呢?我以为isspace在libc中只是一个宏,查了一下代码才知道,它定义如下(NOT from glibc):

#define _S 0x08

extern const char *_ctype_;

__CTYPE_INLINE int isspace(int c)
{
return (c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)c] & _S));
}

点击查看libc对isspace的完整定义

虽然定义成了一个inline函数,但是依然没有直接比较来得直接简单。

简单地将isspace替换成直接比较,让我的解压速度(我在做xxx的解压)从140MB/s上升到200MB/s,非常不错。

关键路径上编码,要减少频繁的函数调用,不能只要风度不要温度。

分享到:
评论

相关推荐

    C++编码规范与指导

    5. **异常处理**:谨慎使用异常,避免在关键路径上抛出异常。确保所有的`catch`块都能捕获到预期的异常,并提供适当的错误处理。 6. **内存管理**:明智地使用动态内存,遵循RAII(Resource Acquisition Is ...

    C++语言编码规范

    头文件的构成与源文件类似,但需注意使用`#ifndef`、`#define`和`#endif`预防重复包含,并使用相对路径而非绝对路径包含其他头文件。同时,避免在头文件中定义变量,以减少编译依赖和二进制大小。 ### 3. 程序格式...

    c#编码的几个好习惯

    - **关注性能瓶颈**:识别并优化关键路径上的性能瓶颈,可以极大地提高应用的整体性能。 #### 22. 设计模式 - **使用设计模式**:熟悉并正确应用设计模式,可以帮助构建更加灵活、可扩展和易于维护的系统。 #### ...

    Python_编码风格指南中译版

    推荐使用2个空格作为缩进单位,而不是制表符,以确保代码在不同编辑器和设备上的一致性。 **2.5 空行** 合理使用空行可以帮助分隔不同的代码段,提高代码的可读性。每个类或函数之间至少应有一行空白行,长函数...

    Wind River的编码习惯

    "Wind River的编码习惯"这个主题涉及到在VxWorks环境下编写代码的一系列规范和最佳实践,这些习惯有助于确保软件的可读性、可维护性和性能。 首先,编码习惯的基础是遵循一定的编程语言标准,例如C99或C++11。在...

    c++编码规范

    根据给定的文件信息,以下是对“C++编码规范”的详细知识点...综上所述,C++编码规范涵盖了代码组织、风格、循环与条件语句、数据类型选择以及内存管理等多个方面,遵循这些规范有助于编写出高质量、易于维护的代码。

    财税实务开票软件(金税盘版)常见问题(含税收分类编码如何选择、如何开票).doc

    4. **未更新税收分类编码的处理**:若软件已是最新版本但编码未更新,需在联网状态下,进入系统设置-编码管理-商品和服务税收分类编码界面,点击“更新”,然后重新登录。 5. **开具增值税普通发票**:通过“发票...

    一键删除带有中文路径的资源

    在处理中文路径时,需要确保Python解释器正确地编码和解码路径字符串,通常使用`str.encode('utf-8')`进行编码,`str.decode('utf-8')`进行解码。 在实际运行这个脚本前,一定要谨慎,因为删除操作是不可逆的。确保...

    Google_C 编码规范_中文版.pdf

    内联函数的优点在于它可以提高程序的运行效率,尤其是在处理小型访问函数或关键执行函数时。然而,过度使用内联函数可能导致目标代码膨胀,从而降低程序性能。因此,建议仅将简短的函数定义为内联。 #### 作用域 -...

    【Java】中常见的URL问题及解决方案Java基础教程.pdf

    在这种情况下,解决方法是先手动编码路径,然后传递给`HttpBuilder`,或者使用`HttpBuilder`提供的方法来避免路径编码问题。 在处理URL时,理解URL的组成部分和编码规则至关重要。URL由协议、主机、路径、查询参数...

    Google编码规范中文版(zh-google-style-guide)

    **Google编码规范中文版(zh-google-style-guide)** Google编码规范是全球知名科技公司Google为开发者制定的一套详细的编程指导原则,旨在提高代码质量和可维护性。这份中文版的编码规范,让中国开发者能更方便地...

    Python2.7解决中文的方法

    可以使用`sys.setdefaultencoding()`来设置这些流的编码,但此方法仅在Python启动时有效,且非标准API,应谨慎使用。 4. **使用`io`模块**: - Python 2.7的`io`模块提供了更现代的I/O接口,支持Unicode。可以使用...

    Symbian程序编码规范

    《Symbian程序编码规范》是一份针对Symbian操作系统平台的编程指南,旨在帮助开发者遵循最佳实践,提高...通过深入理解和遵循这些规范,开发者可以写出高质量的Symbian应用程序,确保其在目标平台上稳定、高效运行。

    PHP安全编码手册.pdf

    总结来说,PHP安全编码手册强调了一系列关于安全编码的最佳实践,包括了解PHP语言的基础知识,理解并合理配置安全模式,实施通用安全解决方案,谨慎处理变量,保持开发环境的清洁,以及遵守安全编码原则。...

    C#编码规范

    ### C#编码规范详解 #### 一、命名约定 C#中的命名规范是代码清晰性和可维护性的基石。良好的命名可以显著减少代码的阅读难度,让其他开发者更容易理解代码的意图。 1. **常用命名术语说明**:了解并遵循常用的...

    C#编码规范和编程好习惯(3)

    1. **避免硬编码路径**:不要在代码中直接使用如`"C:\temp"`这样的绝对路径,因为这会导致程序在其他环境中无法正常工作。取而代之的是,使用相对路径或者通过环境变量来获取路径。 ```csharp string tempPath =...

    c ++ 编码规范指导手册

    - **前置声明**:在不包含头文件的情况下,仅声明所需类或函数,减少编译时的依赖。 - **内联函数**:对于小而简单的函数,可以声明为内联,以减少函数调用的开销,但不应滥用,因为过度使用可能导致编译器拒绝...

    xilinx编码规范.pdf

    2. **资源优化**:在设计中应尽可能减少所需的资源数量,这不仅有助于降低成本,还能提高整体设计的效率。 3. **低功耗**:低功耗设计对于延长设备使用寿命和减少能源消耗至关重要。 4. **缩短设计周期**:通过...

    阿里巴巴编码规范(Java)满分答卷

    《阿里巴巴编码规范(Java)满分答卷》是针对Java开发者的一份详尽的编程规范指南,旨在提高代码质量、可读性和可维护性。这份规范由阿里巴巴集团制定,被广泛应用于其内部项目,并对整个Java社区产生了深远影响。...

Global site tag (gtag.js) - Google Analytics