软件优化技术

软件优化技术

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

提升软件性能的技术宝典,软件工程师的进阶之路。

内容简介

本书介绍了在现代计算机系统上充分利用微处理器计算能力以提高软件性能的主要优化方法,共分为七章。

本书融合了底层技术和软件优化技术两个层面的内容,以编程实践为核心,提供了较多的编程习题,旨在提升读者的编程能力。全书分为七章,第1章介绍了软件性能工程、延迟、吞吐率、加速比等基本概念和性能测试方法。后续章节围绕着CPU、SIMD指令系统、多线程、GPU、面向对象程序设计语言(C++和Java)、磁盘与网络等专题展开。

作者简介

作者陈虎,华南理工大学软件学院副教授,长期从事软件优化设计的科研和教学工作,承担了国家重点研发计划、国家自然科学基金重点项目等多项国家、省部级课题。具有超过十五年的专用高性能计算软件开发经验,研制的高性能计算软件已应用于国内主要超级计算机系统。

章节目录

版权信息

前言

第1章 引言

1.1 软件优化概述

1.1.1 软件优化的主要方法

1.1.2 软件性能工程

1.1.3 关于软件优化的一些观点

1.2 评价软件性能的指标和方法

1.2.1 延迟和吞吐率

1.2.2 加速比和效率

1.2.3 Amdahl定理

1.2.4 M/M/k模型

1.3 常用软件工具和时间测量方法

1.3.1 常用软件工具

1.3.2 时间测量

1.4 一个程序性能分析的实例

1.5 扩展阅读

1.6 习题

1.7 实验题

参考文献

第2章 CPU上的基本优化方法

2.1 计算机体系结构基础

2.1.1 指令集体系结构

2.1.2 指令铁律

2.1.3 流水线及其相关性

2.1.4 超标量和乱序执行

2.1.5 典型微处理器的微结构

2.2 针对算术逻辑指令的优化

2.2.1 现代微处理器的算术逻辑指令延迟与吞吐率

2.2.2 选择合适的数据类型

2.2.3 使用简单指令代替复杂指令

2.2.4 使用特殊指令

2.2.5 查表法

2.3 针对条件分支指令的优化

2.3.1 分支预测

2.3.2 消除分支

2.3.3 组合多个分支以提高分支预测的准确度

2.3.4 使用条件执行指令

2.3.5 合理使用switch语句

2.4 针对Cache的优化

2.4.1 现代微处理器的Cache

2.4.2 数据对齐

2.4.3 SoA的结构组织方式

2.4.4 数据分块以提升Cache命中率

2.4.5 Cache预取

2.5 针对循环结构的优化

2.5.1 消除循环

2.5.2 循环展开

2.6 综合实例

2.6.1 Linux内核中的ECC计算

2.6.2 Hash表的构建

2.7 扩展阅读

2.8 习题

2.9 实验题

参考文献

第3章 基于SIMD指令系统的优化方法

3.1 SIMD指令系统简介

3.1.1 SIMD指令系统概况

3.1.2 软件系统使用SIMD指令的方法

3.2 SIMD内嵌原语

3.2.1 内嵌原语的数据类型

3.2.2 向量设置操作

3.2.3 计算操作

3.2.4 比较操作

3.2.5 访存操作

3.2.6 数据排列操作

3.3 基于内嵌原语的SIMD程序设计

3.3.1 数据对齐和数据宽度

3.3.2 SoA结构

3.3.3 数据比较

3.3.4 特殊指令

3.3.5 寄存器数量

3.4 SIMD程序实例

3.4.1 使用SSE指令去除空格

3.4.2 基于SIMD指令的双调排序和归并排序

3.4.3 fftw的可移植设计

3.5 扩展阅读

3.6 习题

3.7 实验题

参考文献

第4章 基于多线程的优化方法

4.1 多核处理器体系结构

4.1.1 多线程处理器

4.1.2 多核处理器系统

4.1.3 Cache一致性协议

4.2操作系统级线程调用

4.2.1 线程

4.2.2 线程基本API

4.2.3 Linux的线程同步和互斥

4.2.4 Windows的线程同步和互斥

4.3 OpenMP

4.3.1 for编译制导语句

4.3.2 共享变量和私有变量

4.3.3 归约子句

4.3.4 nowait子句

4.3.5 single制导指令

4.3.6 critical子句

4.3.7 barrier子句

4.3.8 其他子句

4.4 多线程程序的一些问题

4.4.1 临界区

4.4.2 Cache伪共享

4.4.3 多线程的并行化设计方法

4.5 多线程并行化实例

4.5.1 Horner算法的并行化

4.5.2 构建Hash表

4.5.3 归并排序

4.6 扩展阅读

4.7 习题

4.8 实验题

参考文献

第5章 GPU的优化方法

5.1 GPU体系结构

5.1.1 面向吞吐率优化的异构计算

5.1.2 GPU总体结构

5.1.3 SIMT机制

5.1.4 存储器结构

5.2 GPU基本编程方法

5.2.1 线程的组织结构

5.2.2 GPU函数说明

5.2.3 存储器管理以及与主机的数据交换

5.2.4 GPU上线程之间的同步

5.2.5 OpenCL的程序对象和内核对象

5.2.6 程序实例

5.3 GPU程序优化方法

5.3.1 指令吞吐率

5.3.2 资源利用率

5.3.3 共享存储器

5.3.4 全局存储器

5.3.5 掩盖主机和GPU之间的数据传输延迟

5.3.6 动态并行机制

5.4 GPU程序实例

5.4.1 矩阵乘法

5.4.2 LU分解

5.5 扩展阅读

5.6 习题

5.7 实验题

参考文献

第6章 面向对象程序设计语言的优化方法

6.1 C++的性能优化

6.1.1 C++实现简介

6.1.2 STL

6.2 Java的性能优化

6.2.1 Java虚拟机简介

6.2.2 Java字节码的执行机制

6.2.3 Java本地接口

6.2.4 Java的多线程机制

6.3 垃圾回收

6.3.1 垃圾回收基本技术

6.3.2 HotSpot JVM中的垃圾回收

6.4 扩展阅读

6.5 习题

6.6 实验题

参考文献

第7章 系统级软件优化

7.1 硬盘系统与文件系统的性能优化

7.1.1 硬盘系统

7.1.2 文件系统

7.1.3 性能优化方法

7.1.4 实例:外排序

7.2 网络连接的性能优化

7.2.1 网络连接硬件

7.2.2 网络编程简介

7.2.3 性能优化方法

7.2.4 实例:Web服务器的结构

7.3 软件总体结构的设计考虑

7.3.1 用户友好性设计

7.3.2 可移植性设计

7.3.3 错误处理设计

7.3.4 系统可维护性设计

7.4 扩展阅读

7.5 习题

7.6 实验题

参考文献

软件优化技术是2023年由机械工业出版社出版,作者陈虎。

得书感谢您对《软件优化技术》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
软件测试技术指南 电子书
本书适合于从事软件测试领域的技术人员及希望从事软件测试的其他专业人员阅读, 也适合计算机、软件、自动化等相关专业的学生与老师参考。
网络规划与优化技术 电子书
全面介绍无线传播知识、LTE原理、网络规划优化,包含17章在线学习资源。
组态软件应用技术 电子书
本书以北京三维力控科技有限公司的组态软件力控ForceControl7.0为例,系统地介绍了组态软件技术及其应用。以锅炉水位监控、智能建筑分区供水监控系统的设计和实现、智能建筑分区供水监控系统的双机冗余为例,对画面组态、I/O组态、动画连接、脚本系统、分析曲线、报表系统、报警和事件、冗余系统进行了详尽的介绍。同时对涉及的底层控制器西门子S7-200控制器的相关知识进行了补充。
FPGA软件测试与评价技术 电子书
本书主要介绍了业内主流FPGA的结构及特点,基于开发流程,介绍了各种测试工具、第三方仿真工具,主要内容包括FPGA开发流程,FPGA软件测试标准、模型和方法,FPGA测试过程中要使用的工具,FPGA软件测试实例分析,以及FPGA软件测试过程与管理。
软件逆向分析技术及应用 电子书
本书根据本科生和研究生软件逆向分析相关课程的教学需要,以实例为导引,面向攻防实践,将逆向分析基础和工具融入实例的剖析过程中,使学生能够在解决实际问题的过程中掌握相关基础和常用工具的使用方法。通过对软件逆向基础、常见文件格式解析、常用反汇编算法及缺陷分析、Android程序逆向基础和相关工具的介绍,读者能够掌握基本的逆向分析方法。随着逆向分析技术的不断演进,一些新的理论和技术不断涌现,本书围绕代码混