C程序性能优化

出版时间:2013-1  出版社:人民邮电出版社  作者:片山善夫  页数:139  字数:181000  译者:何本华 居福国,居福国  
Tag标签:无  

内容概要

  《C程序性能优化:20个实验与达人技巧》从CPU与编译器的运行机制讲起,带领读者一步步了解程序的执行成本、编译器的优化选项等,总结出许多C程序性能优化的技巧,并以实验的方式进行了讲解,简明易懂,使人印象深刻。书中带有大量的代码实例,使读者不仅能够了解代码优化的原理,还能够轻松地在实践中应用。  《C程序性能优化:20个实验与达人技巧》适合有一定基础的C语言编程人员阅读。

作者简介

  片山善夫:具有近二十年的C语言编译器和解释器开发经验。现从事对SPARC、VisionChip等体系结构的研究。译者介绍:何本华,日语专业翻译,擅长IT类、工程技术类、新闻稿件类翻译,曾担任奥特曼之父中田幸和的口译。居福国,毕业于复旦大学计算机科学与技术专业,精通C语言和Java,具有丰富的编程经验。

书籍目录

第1章 CPU与编译器概论
1.1 高速路与人行道 
1.2 编译器是如何运作的 
编译后的汇编语言程序 
添加优化选项后的结果 
1.3 CPU是如何运作的 
指令集架构与微架构 
如何执行指令 
指令流水线 
高速缓存 
深入探讨高速缓存 
缓存块的替换算法 
超标量指令执行 
第1章 是不是偏离了主题 
第2章 执行成本
2.1 两程序的执行成本
2.2 计·测·谋 
书中的探讨 
2.3 防止基准测试程序被优化 
防止操作“归并” 
防止变量在初始化时被优化 
防止重复单一指令被优化 
本书中的基准测试程序 
2.4 验证——哪一步操作导致执行速度缓慢 
2.5 基础加法与赋值运算 
单一的赋值操作(寄存器间的传送) 
单一的赋值操作(数据相互关联的情况) 
常量赋值 
变量间的加法运算 
变量与常量相加 
2.6 耗时的乘法运算 
变量间的乘法运算 
变量与常量相乘 
2.7 更为耗时的除法运算 
变量的除法(寄存器间的计算) 
除数为2、4的除法运算 
除数不是2的乘方的除法运算 
无符号整数除法运算 
除数为2的乘方时除法运算使用低成本移位指令 
2.8 内存读取 
小数组的读取(小范围内的内存操作) 
大数组的读取(大范围内的内存操作) 
与台式机的CPU进行比较 
2.9 造成执行时间差别的判断语句 
无else节点的if语句 
带else节点的if语句 
2.10 32/64位环境中不同的函数调用 
2.11 实验总结 
若想被爱则先爱 
第3章 寻找性能瓶颈
3.1 使用gprof命令进行分析 
gprof的使用方法 
3.2 哪个环节在消耗时间 
获取库函数的评测信息 
耗时的函数 
显示库函数的调用次数 
3.3 函数的调用关系 
3.4 进行数据分析的原理 
3.5 其他性能分析器 
培养高水平人才的教育系统 
第4章 达人方法论
4.1 达人的关注点 
硬件篇 
编译器/中间件篇 
算法篇 
4.2 【硬件篇】数组和缓存的有效利用 
矩阵的乘法运算 
调整数组操作的顺序 
展开循环的方式 
矩阵的分块 
4.3 【库函数篇】缓慢函数的迂回战术 
strcmp函数为何缓慢 
优化的陷阱 
4.4 【硬件篇】使用SIMD进行字符串对比 
4.5 【库函数篇】对比各种输入输出方法 
行输入函数的对比 
输出方法 
管道输入输出的特殊案例 
管道输入输出与文件输入输出 
4.6 【算法篇】二分法查找与平衡二叉树 
海量数据的分类 
真要做到如此地步? 
第5章 进一步研究编译器
5.1 不同级别的优化选项 
GCC的优化选项 
“零优化”对调试有效 
以不出现未定义行为为前提的2级以上优化选项 
5.2 优化·寄存器·外部变量 
5.3 删除公共子表达式为程序瘦身 
5.4 指针与复杂运算简化 
5.5 将用户函数进行内联展开 
和别人拉开差距! 
第6章 给办公系统的一些启示
6.1 排序与字符串操作 
6.2 小数点数的计算与字符串/数字的换算 
块数据输入输出和字段分割 
统计带小数部分的数 
整数转换成字符串 
性能优化的效果 
6.3 半角字符转换为全角字符 
判定字符的字节数 
ASCII字符与半角片假名字符的判定 
ASCII字符转换为全角字符 
半角字符转换为全角字符 
性能优化的效果 
判定字符字节数的其他方法 
有关UTF-8 
6.4 探索具有某种数据特性的数组 
数据的特性 
二分法查找与线性查找相结合 
性能优化的效果 
后记

章节摘录

版权页:   插图:   6.1 排序与字符串操作 在办公系统中经常会进行数据规范化处理,以及排序、分类、统计、数据的变形等。但随着数据量的不断增加,数据处理速度难免逐渐降低。每晚花费几个小时来批量处理数据也不能按时完成,给第二天的工作带来不便,这样的例子在现实生活中比比皆是。为了减轻服务器的负担,大家都希望能将服务器程序的执行时间缩短。 一般来说,办公程序中多半的数据排序和字符串操作都比较耗时,所以高效的优化策略就成了解决问题的焦点所在。在这一章中,我们会从USP研究所使用办公系统工具群“Unieage Command”的优化案例中甄选几个来进行讲解。虽然形式上有些不同,但都是些常用的逻辑,想必对读者朋友来说还是能起到一定作用的。 当程序在处理数据时,如果数据结构较合理,那也就意味着会有了好的处理方法(算法)。相反,处理结构不合理的数据就会拉长执行时间。也是基于这样的出发点,本书在最后选取了处理数据性质的案例。 6.2小数点数的计算与字符串/数字的换算 本章所使用的程序sm2先输入由空格来分隔开的数据行,然后按类别统计各字段的总和。表示分类类别的字段和作为被统计对象的字段将在程序执行时进行分配。 这是个通用版的程序,如果有具体案例的话就能更好地把握其要点。截图6—1中的数据是连锁店上传的销售额。将这些数据的第4至第7个字段按相同的分店名合并起来,并以第一个字段按顺序输出,其结果请看截图6—2。 该程序在编写好之后实施了几次性能优化,最终改善后的速度是起初的6.38倍。有关改善的方法后面会进行说明。 块数据输入输出和字段分割 sm2程序需要进行海量数据的输入输出,如果能对输入输出环节进行优化那就再好不过了。因此我们在操作时不使用库函数getline,而是在自定义大小的输入输出函数中定义4MB的输入缓冲区,然后将数据直接读入缓冲区,需要时从中取出一行的数据就可以了。 另外,原本我们在用字段分解输入行的过程中使用的是strtok函数,如果能将strspn函数和strcspn函数结合起来使用,效率将会得到提升。

编辑推荐

作者精通高效编程,其开发的C编译器,不仅适用于16位及32位系统,还能在GPU中对视频数据进行实时编译。作者将C高效编程的心得浓缩于20个技巧,并将这些技巧通过实验的方式进行讲解,简明易懂,使人印象深刻。书中带有大量的代码实例,使读者不仅能够从理论上得以提高,而且还能够轻松地在实践中应用。

图书封面

图书标签Tags

评论、评分、阅读与下载


    C程序性能优化 PDF格式下载


用户评论 (总计35条)

 
 

  •   首先这本书,是我买日本翻译科技书中,纸张最不好的,
    其次,非常薄,感觉有点贵.
    内在,这本书大部分是介绍性东西,向作者展示遇到的问题,怎么解决,怎么检测,最后分析得到的图表数据
    我对这本书理解是,向一本关于C的科普小读物.挺容易理解的.看完确实有点收获.要想深入优化C,估计需要
    每个人努力几年.书中C是在Linux上采用GCC编译的.对于书原作者,感觉他对编译器优化,CPU,缓存偏嵌入式
    研究的很透.对C的一些代码层次编写一般.
    总的来说,很不错,开阔视野.毕竟纯C的书不多.
    下面是我看完这本书:遇到的一些问题,和不解
    1.书062页
    作者说:要实现高效编程,一是优化自己的程序,二是将库函数重写为效率更高的函数,三十减少库函数的使用频率
    我感觉上面说的不严谨,也不连贯.
    一是优化自己的程序,二才是减少库函数的使用频率,三是将程序用到的库函数重写为效率更高的函数.
    2.书086页下面到书087页上面
    我是没有读懂他在说什么,语句和程序代码没有因果关系,这里估计是因为这本书是翻译的,翻译的书都有点翻译的问题.
  •   有关C语言的性能优化测试方法
  •   目前在当当上能买到的C语言优化方面的比较好的书
  •   学习了优化方面的知识,对工作很有用
  •   第一本性能优化的书籍,只不过有些薄
  •   书不错,印刷也好!就是感觉简单了些,说得还是通俗易懂的!
  •   日本作家写的都很浅显易懂
  •   日本人写书真精简啊,超贵。不过内容不错。
  •   部分章节讲的不错。只是本书每一章节都显得很幼稚
  •   书真的不错,薄薄一本要看很多遍才会有所收获
  •   书是很好的书哦
  •   5分纯粹是因为送货快,书还没看.
  •   此书值得一看的,对于底层C设计人员。
  •   东西有些基本了
  •   好薄啊。。。。,不过思想还是不错的
  •   就是贵了点。。。。挺薄的一本
  •   哎呀妈呀!这次当当肿么了,我不就在双12趁打折买两本书吗!至于只用个塑料袋子包装下就送来!简单倒无所谓了,可是竟然给压皱了,而且还很严重,让我情何以堪。让我怎么能相信这竟然是当当送来的书呢!太郁闷了。能不能搞好点,能不能让人放心呢?
  •   这本书本来是我期待的,到手才发现,原来不是我想像的那么好,也不是我想要的
  •   嗯一般,日本人也整不出来啥好书
  •   初步入门,值得推荐,好好看看
  •   不过书太薄了,还可以吧,可买可不买
  •   看完后你就觉得:你这达人也太容易当了。
  •   非常好,就是都开过封了
  •   各种经验 讲得非常独到,从各个角度入手优化代码啊,对于现在封装算法的我来说 刚好可以用
  •   这本书比较好,但前提是你要有一点基础!
  •   是一本小册子的感觉换工作面试之前快速读了一遍,对于C的优化有个相对系统的了解,其实有些细节在工作中也有所体会但是技术进阶往往更多是思路和眼光方面的提升,看了这个书有个大体思路,面试的时候可以结合具体经验来谈,效果不错... 阅读更多
  •   写的真的很不错,刚学完C语言后,看看能很快再有提高
  •   太坑人了,刚买完,第三天看,降价降了好多。书很小很薄很袖珍,内容还没仔细看,但愿不会太差吧。
  •   有点深奥,不过书是正版,质量不错
  •   虽然包含了点艺术成分,不过匪夷所思的单薄,跟别人七八块钱的小册子差不多一样小日本人写的书翻译过来,确实比英译的书,价格提高了一个档次啊!
  •   真的很小很薄啊
  •   C语言性能优化是一门艺术
  •   本次购物的总体满意度很好
  •   怒赞图灵日语书系列
  •   确实一般!
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7