作者:
理查德· L. 赛茨(Richard L.Sites)
出版社: 人民邮电出版社
出品方: 异步图书
原作名: Understanding Software Dynamics
译者: 赵利通
出版年: 2023-12
页数: 618
定价: 129.80元
装帧: 平装
丛书: 异步图书-程序员必读经典系列
ISBN: 9787115616562
出版社: 人民邮电出版社
出品方: 异步图书
原作名: Understanding Software Dynamics
译者: 赵利通
出版年: 2023-12
页数: 618
定价: 129.80元
装帧: 平装
丛书: 异步图书-程序员必读经典系列
ISBN: 9787115616562
内容简介 · · · · · ·
本书不仅介绍了如何测量CPU、内存、磁盘/SSD、网络的性能,如何观察、记录、跟踪、汇总性能指标,还讨论了如何设计和创建性能测试工具KUtrace,以及如何对观察结果进行推理。
本书不仅适合软件开发人员阅读,还适合计算机相关专业的师生参考。
作者简介 · · · · · ·
理查德· L. 赛茨(Richard L.Sites),美国国家工程院院士。在职业生涯的大部分时间中,他负责硬件与软件的交接,特别关注 CPU/软件性能交互。他担任了 DEC Alpha 处理器的架构师,发明了处理器的性能计数器。他还在 DEC、Adobe、Google 和 Tesla 公司编写过低开销的微代码,负责过软件跟踪。
目录 · · · · · ·
第一部分 测量
第1章 我的程序太慢了 3
1.1 数据中心环境 3
1.2 数据中心的硬件 5
1.3 数据中心的软件 6
1.4 长尾时延 7
1.5 思维框架 9
1.6 数量级估测 9
1.7 为什么事务很慢 10
1.8 5种基本资源 11
1.9 小结 12
第2章 测量CPU时间 13
2.1 发展历史 14
2.2 现状 17
2.3 测量add指令的时延 18
2.4 直线代码失败 19
2.5 简单循环、循环开销失败、优化编译器失败 19
2.6 死变量失败 22
2.7 更好的循环 23
2.8 依赖变量 24
2.9 实际执行时延 25
2.10 更多细微差别 25
2.11 小结 26
习题 26
第3章 测量内存层次 28
3.1 内存计时 28
3.2 关于内存 29
3.3 缓存组织 30
3.4 数据对齐 32
3.5 页表缓存组织 33
3.6 测量内存的步骤 34
3.7 测量缓存行的大小 34
3.8 问题:预取第N+1行 36
3.9 依赖加载 37
3.10 非随机的DRAM 38
3.11 测量每个缓存级别的总大小 39
3.12 测量每个级别的缓存相联度 41
3.13 页表缓存时间 42
3.14 缓存利用不足 42
3.15 小结 42
习题 43
第4章 CPU与内存的交互 45
4.1 缓存交互 45
4.2 简单矩阵乘法的动态 47
4.3 估测 47
4.4 初始化、反复核对和观察 48
4.5 初始结果 49
4.6 更快的矩阵乘法,转置方法 51
4.7 更快的矩阵乘法,子块方法 53
4.8 感知缓存的计算 54
4.9 小结 55
习题 55
第5章 测量磁盘/SSD的传输时间 56
5.1 关于硬盘 56
5.2 关于SSD 58
5.3 软件磁盘访问和磁盘缓冲 60
5.4 磁盘读取有多快 62
5.5 一次粗略估算 65
5.6 磁盘写入有多快 66
5.7 结果 66
5.8 从磁盘读取 67
5.9 写入磁盘 71
5.10 从SSD读取 74
5.11 写入SSD 75
5.12 多次传输 76
5.13 小结 77
习题 77
第6章 测量网络流量 79
6.1 关于以太网 81
6.2 关于集线器、交换机和路由器 82
6.3 关于TCP/IP 83
6.4 关于数据包 84
6.5 关于RPC 85
6.6 空程差 87
6.7 观察网络流量 88
6.8 示例RPC消息的定义 90
6.9 示例日志设计 92
6.10 使用RPC的示例客户-服务器系统 93
6.11 示例服务器程序 94
6.12 自旋锁 95
6.13 示例客户端程序 96
6.14 测量一个示例客户-服务器RPC 98
6.15 后处理RPC日志 99
6.16 观察 100
6.17 小结 101
习题 102
第7章 磁盘和网络数据库的交互 103
7.1 时间对齐 103
7.2 多个客户端 109
7.3 自旋锁的应用 109
7.4 实验1 110
7.5 磁盘数据库 113
7.6 实验2 113
7.7 实验3 117
7.8 日志 119
7.9 理解事务时延的变化 120
7.10 小结 120
习题 121
第二部分 观察
第8章 日志 125
8.1 观察工具 125
8.2 日志 125
8.3 基本日志 126
8.4 扩展日志 127
8.5 时间戳 127
8.6 RPC ID 128
8.7 日志文件的格式 129
8.8 管理日志文件 130
8.9 小结 131
第9章 聚合措施测量 132
9.1 均匀的事件率与阵发的事件率 133
9.2 测量间隔 133
9.3 时间线 134
9.4 进一步汇总时间线 136
9.5 直方图的时间尺度 138
9.6 聚合每个事件的测量结果 140
9.7 一段时间的值的模式 142
9.8 更新间隔 143
9.9 事务采样 144
9.10 小结 145
第10章 仪表板 147
10.1 示例服务 147
10.2 示例仪表板 149
10.3 主仪表板 149
10.4 实例仪表板 153
10.5 服务器仪表板 154
10.6 健全检查 154
10.7 小结 155
习题 155
第11章 其他现有工具 156
11.1 观察工具的分类 156
11.2 要观察的数据 158
11.3 top命令 159
11.4 /proc和/sys伪文件 160
11.5 time命令 160
11.6 perf命令 161
11.7 oprofile 162
11.8 strace 165
11.9 ltrace 168
11.10 ftrace 169
11.11 mtrace 172
11.12 blktrace 174
11.13 tcpdump和Wireshark 177
11.14 locktrace 179
11.15 输入负载、出站调用 179
11.16 小结 180
习题 181
第12章 跟踪工具 182
12.1 跟踪工具的优势 182
12.2 跟踪工具的缺点 183
12.3 3个起始问题 183
12.4 示例1:早期的程序计数器跟踪 186
12.5 示例2:每个函数的计数和时间 188
12.6 案例分析:Gmail的按函数跟踪 191
12.7 小结 196
第13章 优秀观察工具的设计原则 197
13.1 需要观察什么 197
13.2 有多频繁?要多久 198
13.3 开销有多大 199
13.4 设计的后果 200
13.5 案例分析:直方图桶 200
13.6 设计数据显示 202
13.7 小结 203
第三部分 内核-用户跟踪
第14章 KUtrace的目标、设计、实现 207
14.1 概述 207
14.2 目标 208
14.3 设计 209
14.4 实现 211
14.5 内核补丁和Linux内核可加载模块 211
14.6 控制程序 212
14.7 后处理 213
14.8 关于安全问题的一点说明 213
14.9 小结 213
第15章 KUtrace中的Linux内核补丁 214
15.1 跟踪缓冲区数据结构 215
15.2 原始跟踪块的格式 216
15.3 跟踪条目 217
15.4 IPC跟踪条目 218
15.5 时间戳 219
15.6 事件编号 219
15.7 嵌套的跟踪条目 219
15.8 代码 220
15.9 数据包跟踪 221
15.10 AMD/Intel x86-64补丁 222
15.11 小结 224
习题 224
第16章 KUtrace的Linux内核可加载模块 225
16.1 内核接口数据结构 225
16.2 模块加载/卸载 226
16.3 初始化和控制跟踪 226
16.4 实现跟踪调用 227
16.5 Insert1 227
16.6 InsertN 229
16.7 切换到一个新的跟踪块 230
16.8 小结 230
第17章 KUtrace的用户态的运行时控制 231
17.1 控制跟踪 232
17.2 独立的kutrace_control程序 232
17.3 底层的kutrace_lib库 233
17.4 可加载模块的控制接口 233
17.5 小结 234
第18章 KUtrace的后处理 235
18.1 后处理的细节 235
18.2 rawtoevent程序 236
18.3 eventtospan程序 237
18.4 spantotrim程序 239
18.5 spantospan程序 239
18.6 samptoname_k和samptoname_u程序 240
18.7 makeself程序 240
18.8 KUtrace的JSON格式 240
18.9 小结 242
第19章 KUtrace中软件动态的显示 243
19.1 概述 243
19.2 区域①—控件 244
19.3 区域②—y轴 246
19.4 区域③—主时间线 246
19.5 区域④—IPC图例 251
19.6 区域⑤—x轴 252
19.7 区域⑥—保存/还原 252
19.8 辅助控件 252
19.9 小结 253
第四部分 推理
第20章 寻找什么 257
20.1 概述 257
20.2 寻找原因 258
第 21章 执行太多 259
21.1 概述 259
21.2 程序 259
21.3 谜团 260
21.4 探索和分析 261
21.5 理解谜团 265
21.6 小结 265
第22章 执行缓慢 267
22.1 概述 267
22.2 程序 268
22.3 谜团 268
22.4 浮点运算对立程序 270
22.5 内存对立程序 273
22.6 理解谜团 274
22.7 小结 274
第23章 等待CPU 276
23.1 程序 276
23.2 谜团1 276
23.3 探索和分析 277
23.4 谜团2 279
23.5 理解谜团2 280
23.6 附加谜团 282
23.7 小结 284
习题 284
第24章 等待内存 285
24.1 程序 285
24.2 谜团1 286
24.3 探索和分析 286
24.4 谜团2:访问页表 290
24.5 理解谜团2 290
24.6 小结 292
习题 292
第25章 等待磁盘 293
25.1 程序 293
25.2 谜团 294
25.3 探索和分析 294
25.4 读取40 MB 296
25.5 顺序读取4 KB的块 297
25.6 随机读取4 KB的块 299
25.7 在SSD上写入和同步40 MB 301
25.8 在SSD上读取40 MB 301
25.9 两个程序同时访问两个文件 302
25.10 理解谜团 303
25.11 小结 304
习题 304
第26章 等待网络 305
26.1 概述 305
26.2 程序 306
26.3 实验1 307
26.4 实验1中的谜团 308
26.5 实验1的探索与分析 309
26.6 实验1中RPC之间的时间 313
26.7 实验2 315
26.8 实验3 315
26.9 实验4 316
26.10 理解谜团 319
26.11 附加异常 320
26.12 小结 322
第27章 等待锁 323
27.1 概述 323
27.2 程序 327
27.3 实验1:长时间持有锁 330
27.4 实验1中的谜团 331
27.5 探索和分析实验1 332
27.6 实验2:修复锁捕获 334
27.7 实验3:通过多个锁修复锁争用 335
27.8 实验4:通过锁住更少的工作来修复锁争用 337
27.9 实验5:通过为仪表板使用RCU来修复锁争用 338
27.10 小结 340
第28章 等待时间 341
28.1 定期工作 341
28.2 超时 342
28.3 时间分片 342
28.4 内在的执行延迟 343
28.5 小结 343
第29章 等待队列 344
29.1 概述 344
29.2 请求的分布 346
29.3 队列的结构 347
29.4 工作任务 348
29.5 主任务 348
29.6 Dequeue操作 348
29.7 Enqueue操作 349
29.8 PlainSpinLock类 349
29.9 “工作”例程 350
29.10 简单的示例 350
29.11 哪些地方可能发生了问题 351
29.12 CPU频率 352
29.13 复杂的示例 353
29.14 等待CPU:RPC日志 353
29.15 等待CPU:KUtrace 354
29.16 PlainSpinLock存在的缺陷 357
29.17 根本原因 358
29.18 修复PlainSpinLock:可观察性 359
29.19 负载均衡 360
29.20 队列深度:可观察性 361
29.21 结尾处的自旋 361
29.22 剩下的Z后一个缺陷 362
29.23 交叉检查 362
29.24 小结 363
习题 363
第30章 全书回顾 365
30.1 你学到了什么 365
30.2 我们没有讲什么 367
30.3 接下来的工作 367
30.4 全书小结 368
附录A 示例服务器 369
附录B 跟踪条目 372
术语表 377
参考文献 383
KUtrace HTML图例 384
· · · · · · (收起)
第1章 我的程序太慢了 3
1.1 数据中心环境 3
1.2 数据中心的硬件 5
1.3 数据中心的软件 6
1.4 长尾时延 7
1.5 思维框架 9
1.6 数量级估测 9
1.7 为什么事务很慢 10
1.8 5种基本资源 11
1.9 小结 12
第2章 测量CPU时间 13
2.1 发展历史 14
2.2 现状 17
2.3 测量add指令的时延 18
2.4 直线代码失败 19
2.5 简单循环、循环开销失败、优化编译器失败 19
2.6 死变量失败 22
2.7 更好的循环 23
2.8 依赖变量 24
2.9 实际执行时延 25
2.10 更多细微差别 25
2.11 小结 26
习题 26
第3章 测量内存层次 28
3.1 内存计时 28
3.2 关于内存 29
3.3 缓存组织 30
3.4 数据对齐 32
3.5 页表缓存组织 33
3.6 测量内存的步骤 34
3.7 测量缓存行的大小 34
3.8 问题:预取第N+1行 36
3.9 依赖加载 37
3.10 非随机的DRAM 38
3.11 测量每个缓存级别的总大小 39
3.12 测量每个级别的缓存相联度 41
3.13 页表缓存时间 42
3.14 缓存利用不足 42
3.15 小结 42
习题 43
第4章 CPU与内存的交互 45
4.1 缓存交互 45
4.2 简单矩阵乘法的动态 47
4.3 估测 47
4.4 初始化、反复核对和观察 48
4.5 初始结果 49
4.6 更快的矩阵乘法,转置方法 51
4.7 更快的矩阵乘法,子块方法 53
4.8 感知缓存的计算 54
4.9 小结 55
习题 55
第5章 测量磁盘/SSD的传输时间 56
5.1 关于硬盘 56
5.2 关于SSD 58
5.3 软件磁盘访问和磁盘缓冲 60
5.4 磁盘读取有多快 62
5.5 一次粗略估算 65
5.6 磁盘写入有多快 66
5.7 结果 66
5.8 从磁盘读取 67
5.9 写入磁盘 71
5.10 从SSD读取 74
5.11 写入SSD 75
5.12 多次传输 76
5.13 小结 77
习题 77
第6章 测量网络流量 79
6.1 关于以太网 81
6.2 关于集线器、交换机和路由器 82
6.3 关于TCP/IP 83
6.4 关于数据包 84
6.5 关于RPC 85
6.6 空程差 87
6.7 观察网络流量 88
6.8 示例RPC消息的定义 90
6.9 示例日志设计 92
6.10 使用RPC的示例客户-服务器系统 93
6.11 示例服务器程序 94
6.12 自旋锁 95
6.13 示例客户端程序 96
6.14 测量一个示例客户-服务器RPC 98
6.15 后处理RPC日志 99
6.16 观察 100
6.17 小结 101
习题 102
第7章 磁盘和网络数据库的交互 103
7.1 时间对齐 103
7.2 多个客户端 109
7.3 自旋锁的应用 109
7.4 实验1 110
7.5 磁盘数据库 113
7.6 实验2 113
7.7 实验3 117
7.8 日志 119
7.9 理解事务时延的变化 120
7.10 小结 120
习题 121
第二部分 观察
第8章 日志 125
8.1 观察工具 125
8.2 日志 125
8.3 基本日志 126
8.4 扩展日志 127
8.5 时间戳 127
8.6 RPC ID 128
8.7 日志文件的格式 129
8.8 管理日志文件 130
8.9 小结 131
第9章 聚合措施测量 132
9.1 均匀的事件率与阵发的事件率 133
9.2 测量间隔 133
9.3 时间线 134
9.4 进一步汇总时间线 136
9.5 直方图的时间尺度 138
9.6 聚合每个事件的测量结果 140
9.7 一段时间的值的模式 142
9.8 更新间隔 143
9.9 事务采样 144
9.10 小结 145
第10章 仪表板 147
10.1 示例服务 147
10.2 示例仪表板 149
10.3 主仪表板 149
10.4 实例仪表板 153
10.5 服务器仪表板 154
10.6 健全检查 154
10.7 小结 155
习题 155
第11章 其他现有工具 156
11.1 观察工具的分类 156
11.2 要观察的数据 158
11.3 top命令 159
11.4 /proc和/sys伪文件 160
11.5 time命令 160
11.6 perf命令 161
11.7 oprofile 162
11.8 strace 165
11.9 ltrace 168
11.10 ftrace 169
11.11 mtrace 172
11.12 blktrace 174
11.13 tcpdump和Wireshark 177
11.14 locktrace 179
11.15 输入负载、出站调用 179
11.16 小结 180
习题 181
第12章 跟踪工具 182
12.1 跟踪工具的优势 182
12.2 跟踪工具的缺点 183
12.3 3个起始问题 183
12.4 示例1:早期的程序计数器跟踪 186
12.5 示例2:每个函数的计数和时间 188
12.6 案例分析:Gmail的按函数跟踪 191
12.7 小结 196
第13章 优秀观察工具的设计原则 197
13.1 需要观察什么 197
13.2 有多频繁?要多久 198
13.3 开销有多大 199
13.4 设计的后果 200
13.5 案例分析:直方图桶 200
13.6 设计数据显示 202
13.7 小结 203
第三部分 内核-用户跟踪
第14章 KUtrace的目标、设计、实现 207
14.1 概述 207
14.2 目标 208
14.3 设计 209
14.4 实现 211
14.5 内核补丁和Linux内核可加载模块 211
14.6 控制程序 212
14.7 后处理 213
14.8 关于安全问题的一点说明 213
14.9 小结 213
第15章 KUtrace中的Linux内核补丁 214
15.1 跟踪缓冲区数据结构 215
15.2 原始跟踪块的格式 216
15.3 跟踪条目 217
15.4 IPC跟踪条目 218
15.5 时间戳 219
15.6 事件编号 219
15.7 嵌套的跟踪条目 219
15.8 代码 220
15.9 数据包跟踪 221
15.10 AMD/Intel x86-64补丁 222
15.11 小结 224
习题 224
第16章 KUtrace的Linux内核可加载模块 225
16.1 内核接口数据结构 225
16.2 模块加载/卸载 226
16.3 初始化和控制跟踪 226
16.4 实现跟踪调用 227
16.5 Insert1 227
16.6 InsertN 229
16.7 切换到一个新的跟踪块 230
16.8 小结 230
第17章 KUtrace的用户态的运行时控制 231
17.1 控制跟踪 232
17.2 独立的kutrace_control程序 232
17.3 底层的kutrace_lib库 233
17.4 可加载模块的控制接口 233
17.5 小结 234
第18章 KUtrace的后处理 235
18.1 后处理的细节 235
18.2 rawtoevent程序 236
18.3 eventtospan程序 237
18.4 spantotrim程序 239
18.5 spantospan程序 239
18.6 samptoname_k和samptoname_u程序 240
18.7 makeself程序 240
18.8 KUtrace的JSON格式 240
18.9 小结 242
第19章 KUtrace中软件动态的显示 243
19.1 概述 243
19.2 区域①—控件 244
19.3 区域②—y轴 246
19.4 区域③—主时间线 246
19.5 区域④—IPC图例 251
19.6 区域⑤—x轴 252
19.7 区域⑥—保存/还原 252
19.8 辅助控件 252
19.9 小结 253
第四部分 推理
第20章 寻找什么 257
20.1 概述 257
20.2 寻找原因 258
第 21章 执行太多 259
21.1 概述 259
21.2 程序 259
21.3 谜团 260
21.4 探索和分析 261
21.5 理解谜团 265
21.6 小结 265
第22章 执行缓慢 267
22.1 概述 267
22.2 程序 268
22.3 谜团 268
22.4 浮点运算对立程序 270
22.5 内存对立程序 273
22.6 理解谜团 274
22.7 小结 274
第23章 等待CPU 276
23.1 程序 276
23.2 谜团1 276
23.3 探索和分析 277
23.4 谜团2 279
23.5 理解谜团2 280
23.6 附加谜团 282
23.7 小结 284
习题 284
第24章 等待内存 285
24.1 程序 285
24.2 谜团1 286
24.3 探索和分析 286
24.4 谜团2:访问页表 290
24.5 理解谜团2 290
24.6 小结 292
习题 292
第25章 等待磁盘 293
25.1 程序 293
25.2 谜团 294
25.3 探索和分析 294
25.4 读取40 MB 296
25.5 顺序读取4 KB的块 297
25.6 随机读取4 KB的块 299
25.7 在SSD上写入和同步40 MB 301
25.8 在SSD上读取40 MB 301
25.9 两个程序同时访问两个文件 302
25.10 理解谜团 303
25.11 小结 304
习题 304
第26章 等待网络 305
26.1 概述 305
26.2 程序 306
26.3 实验1 307
26.4 实验1中的谜团 308
26.5 实验1的探索与分析 309
26.6 实验1中RPC之间的时间 313
26.7 实验2 315
26.8 实验3 315
26.9 实验4 316
26.10 理解谜团 319
26.11 附加异常 320
26.12 小结 322
第27章 等待锁 323
27.1 概述 323
27.2 程序 327
27.3 实验1:长时间持有锁 330
27.4 实验1中的谜团 331
27.5 探索和分析实验1 332
27.6 实验2:修复锁捕获 334
27.7 实验3:通过多个锁修复锁争用 335
27.8 实验4:通过锁住更少的工作来修复锁争用 337
27.9 实验5:通过为仪表板使用RCU来修复锁争用 338
27.10 小结 340
第28章 等待时间 341
28.1 定期工作 341
28.2 超时 342
28.3 时间分片 342
28.4 内在的执行延迟 343
28.5 小结 343
第29章 等待队列 344
29.1 概述 344
29.2 请求的分布 346
29.3 队列的结构 347
29.4 工作任务 348
29.5 主任务 348
29.6 Dequeue操作 348
29.7 Enqueue操作 349
29.8 PlainSpinLock类 349
29.9 “工作”例程 350
29.10 简单的示例 350
29.11 哪些地方可能发生了问题 351
29.12 CPU频率 352
29.13 复杂的示例 353
29.14 等待CPU:RPC日志 353
29.15 等待CPU:KUtrace 354
29.16 PlainSpinLock存在的缺陷 357
29.17 根本原因 358
29.18 修复PlainSpinLock:可观察性 359
29.19 负载均衡 360
29.20 队列深度:可观察性 361
29.21 结尾处的自旋 361
29.22 剩下的Z后一个缺陷 362
29.23 交叉检查 362
29.24 小结 363
习题 363
第30章 全书回顾 365
30.1 你学到了什么 365
30.2 我们没有讲什么 367
30.3 接下来的工作 367
30.4 全书小结 368
附录A 示例服务器 369
附录B 跟踪条目 372
术语表 377
参考文献 383
KUtrace HTML图例 384
· · · · · · (收起)
丛书信息
· · · · · ·
异步图书-程序员必读经典系列(共21册),
这套丛书还有
《软技能(第2版)》《开发者关系实践指南》《代码整洁之道》《代码整洁之道》《现代软件工程》
等
。
喜欢读"深入理解软件性能——一种动态视角"的人也喜欢 · · · · · ·
深入理解软件性能——一种动态视角的书评 · · · · · · ( 全部 22 条 )

专业全面的软件性能分析书
历时三个半月,我终于读完这样专业的一本书。本篇,是读完本书后的读书笔记。 一、读完本书后收获的框架性认知 搬运书中内容作为本篇读书笔记主体内容之前,请允许我先用自己语言说一说我从书中收获到的认知。 我们写的程序,运行在计算机上面,有快有慢,绝大部分情况下,我们...
(展开)

能让人深入理解软件性能领域的一本好书
《书本是深入理解软件性能一种动态视角》 当我翻开这本由理查德所著、赵利通翻译的 《书本是深入理解软件性能一种动态视角》时,我原以为这只是一本关于软件性能的普通教材。然而,随着阅读的深入,我逐渐被书中独特的视角和深入的见解所吸引。 理查德以一种...
(展开)

软件性能领域不可多得一本著作
这本书不仅深入讲解了软件性能的基本概念、原理和实践方法,而且还提供了一系列的案例分析与最佳实践,旨在帮助读者构建高性能的应用程序和系统。作者从软件性能的基础测量开始讲起,逐步深入到性能监控、分析、优化策略等高级主题,内容涵盖面广,无论是软件开发或者测试人员...
(展开)

软件性能优化领域不可多得的好书
本书特点 这是一本值得静下心来细读的著作,以预期-实测-分析-优化为方法论详细讨论了CPU、内存、磁盘IO、网络IO的测量、分析和优化方法。相比于其他性能优化的书,本书的每一个观点都有详细的数值测量做支撑,让你不仅知其然还知其所以然。 关于作者 作者是曾负责Google数据中...
(展开)

> 更多书评 22篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部2 )
-
Addison-Wesley Professional (2021)暂无评分 3人读过
以下书单推荐 · · · · · · ( 全部 )
- EA融合企业与系统----数字化抓手Ⅰ (小毛叔)
- 计算机 (团子)
- ℹ️信息与计算 (地球游览者)
- IT 二级基础 操作系统、虚拟化(智力层次-实用性) 1.1.1.5 (ajian005)
- 计算机 (anpirel)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有327人想读,手里有一本闲着?
订阅关于深入理解软件性能——一种动态视角的评论:
feed: rss 2.0
1 有用 异步图书 2023-12-13 09:51:16 北京
基于作者在软件性能优化领域丰富的经验,系统介绍了适用于多种环境的软件性能优化原则和技术,有助于读者理解复杂软件的动态,提高软件的可靠性,解决棘手的性能问题。
0 有用 LessIsMore 2024-11-28 02:37:20 湖北
大概翻了个皮毛,很多章节需要细致思考代但还没来得及。作者是大牛,但我功力还太浅
0 有用 不欺售欺 2024-11-23 22:01:28 浙江
很难评价这本书,作者大牛毫无疑问,但书却不容易读懂,读懂的章节能带来灵感和小悟感,读不懂的章节挣扎于A怎么得出结论E的,中间的BCD呢。很多实用技巧也有很大的局限。总之看个人基础吧
1 有用 椒盐大叔 2024-09-02 17:16:16 浙江
这本书确实跟他的作者一样独一无二。 读者如果是软件工程师,大部分内容对他们都没用。
0 有用 让风吹过 2024-11-30 22:50:01 广东
作者根本就没想把读者教会,缺乏明确具体、循循善诱、引人入胜的教学。