这是一次漫长的旅行!我沉默了一段时间,没有定期在我的博客上发帖。不过,别担心,我很好。取而代之的是,我围绕冠状病毒的这种情况,专注于写一本书“现代CPU的性能分析和调优”(Performance Analysis And Tuning On Modern CPU)。我差不多一年前就开始写这本书了,所以我很高兴我终于可以向人们展示一些东西了。现在,初稿已经准备好了,我欢迎每个人来评论这本书,甚至可能会给它增加一些东西。我知道现在很多人都在苦苦挣扎,所以我决定把这本书免费提供给所有人。最终,每个人都可以下载它的PDF版本。
我为什么要这么做?我开始这本书时只有一个简单的目标:教育开发人员更好地理解在现代硬件上运行的应用程序的性能。大多数开发人员习惯于只查看应用程序的源代码,而不试图了解他们所做更改的性能影响。我知道对我们中的许多人来说,引擎盖下发生的事情是一种黑物质。我知道这很难,但希望有了这本书,现代硬件的性能世界将变得更容易理解。
这本书是关于什么的?您是否曾与同事就某段代码的性能进行过辩论?那么您可能知道预测哪个版本工作得最好有多难。由于现代处理器中有如此多的移动部件,即使对代码进行很小的调整也会引发显着的性能变化。除了所有的复杂性之外,硬件还有许多支持性能分析的功能。没错,CPU能够告诉我们性能瓶颈是什么以及它们出现在哪里。因此,本书重点介绍了从CPU角度看您的代码是什么样子,并提供了特定于硬件的优化方法。本书的核心是围绕如何在代码中找到合适的位置来提高性能。
1.引言2.引言。衡量绩效3.。CPU微体系结构1014。性能分析中的术语和度量5。性能分析接近5.1。代码规范5.2。追踪5.3。工作负载特征5.4。抽样5.5。静态性能分析5.6.。编译器优化报告6.。性能分析的CPU功能6.1。自上而下的微体系结构分析(TMAM)6.2.。最后一个分支机构记录(LBR)6.3。处理器基于事件的采样(PEBS)6.4。英特尔处理器跟踪(PT)7.针对CPU 7.1的源代码调整。数据驱动优化7.2。CPU前端优化7.3。CPU后端优化7.4。优化不良投机7.5。其他调谐区域8。优化多线程应用程序。
这本书是给谁看的?本书主要是为从事性能关键型项目的开发人员编写的。这包括以下领域:高性能计算(HPC)、高频交易(HFT)、Gamedev、数据中心(Facebook、Google等)和其他领域。但我希望它对任何C++开发人员都有用:您可以使用这本书来学习性能分析,它将与您可能拥有的其他技能很好地结合在一起。书中的所有示例都是用C/C++编写的,但它们在很大程度上适用于任何本地编程语言(如C、C++、Rust、Go甚至Fortran)。虽然这本书相当低级,但我希望即使是刚刚开始性能相关工作的开发人员也能读懂。
我把我所有的知识和经验都奉献给了这本书,我渴望与社区分享它。我决定将这本书向每个人开放,我欢迎每个人都来评论这本书,为这本书贡献自己的力量。我希望,通过这种方式,我们可以将不同领域人员的最佳性能实践和专业知识结合起来。