1. 首页
  2. 编程语言
  3. C
  4. C程序性能优化 20个实验与达人技巧

C程序性能优化 20个实验与达人技巧

上传者: 2019-04-08 09:35:30上传 PDF文件 40.41MB 热度 26次
从CPU与编译器的运行机制讲起,带领读者一步步了解程序的执行成本、编译器的优化选项等,总结出许多C程序性能优化的技巧,并以实验的方式进行了讲解,简明易懂,使人印象深刻。书中带有大量的代码实例,使读者不仅能够了解代码优化的原理,还能够轻松地在实践中应用。 第1章CPU与编译器概论   1.1高速路与人行道   1.2编译器是如何运作的   编译后的汇编语言程序   添加优化选项后的结果   1.3CPU是如何运作的   指令集架构与微架构   如何执行指令   指令流水线   高速缓存   深入探讨高速缓存   缓存块的替换算法   超标量指令执行   第1章是不是偏离了主题   第2章执行成本   2.1两程序的执行成本    书中的探讨   2.3防止基准测试程序被优化   防止操作“归并”   防止变量在初始化时被优化   防止重复单一指令被优化   本书中的基准测试程序   2.4验证——哪一步操作导致执行速度缓慢   2.5基础加法与赋值运算   单一的赋值操作(寄存器间的传送)   单一的赋值操作(数据相互关联的情况)   常量赋值   变量间的加法运算   变量与常量相加   2.6耗时的乘法运算   变量间的乘法运算   变量与常量相乘   2.7更为耗时的除法运算   变量的除法(寄存器间的计算)   除数为2、4的除法运算   除数不是2的乘方的除法运算   无符号整数除法运算   除数为2的乘方时除法运算使用低成本移位指令   2.8内存读取   小数组的读取(小范围内的内存操作)   大数组的读取(大范围内的内存操作)   与台式机的CPU进行比较   2.9造成执行时间差别的判断语句   无else节点的if语句   带else节点的if语句   2.1032/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探索具有某种数据特性的数组   数据的特性   二分法查找与线性查找相结合   性能优化的效果   后记 书中的探讨   2.3防止基准测试程序被优化   防止操作“归并”   防止变量在初始化时被优化   防止重复单一指令被优化   本书中的基准测试程序   2.4验证——哪一步操作导致执行速度缓慢   2.5基础加法与赋值运算   单一的赋值操作(寄存器间的传送)   单一的赋值操作(数据相互关联的情况)   常量赋值   变量间的加法运算   变量与常量相加   2.6耗时的乘法运算   变量间的乘法运算   变量与常量相乘   2.7更为耗时的除法运算   变量的除法(寄存器间的计算)   除数为2、4的除法运算   除数不是2的乘方的除法运算   无符号整数除法运算   除数为2的乘方时除法运算使用低成本移位指令   2.8内存读取   小数组的读取(小范围内的内存操作)   大数组的读取(大范围内的内存操作)   与台式机的CPU进行比较   2.9造成执行时间差别的判断语句   无else节点的if语句   带else节点的if语句   2.1032/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探索具有某种数据特性的数组   数据的特性   二分法查找与线性查找相结合   性能优化的效果   后记
用户评论