漫漫开发路PCH:提升大型工程编译速度的利器
对于大型工程 , PCH的确是个好东西
一直以来 , 预编译PCH文件都被证明是一个提升编译速度的好方法 。 通过PCH , 可以在编译开始时仅包含头文件一次 , 这样避免了对某些经常会使用到的头文件的重复扫描 , 从而大大提升了编译速度 , 减少了整个工程的编译时间 。
从传统的角度来说 , 将一个头文件选择作为预编译头文件有点像是一个猜谜语的游戏 , 你会觉得有些头文件应该被预编译 , 而有些在你看来不需要 , 并且 , 每个人对相同的头文件是否应该被预编译都有自己的看法 。
在今天的文章中 , 我们将演示如何通过vcperf分析工具和C++BuildInsightsSDK来找到那些需要被预编译的头文件 。 同时 , 我们还会以开源项目lrrlicht作为一个例子 , 通过对头文件进行有效的预编译 , 我们编译这个项目的速度有了40%的提升 。
如何获取和使用vcperf
在今天的例子中 , 我们使用到了vcperf 。 这是一个用来捕获编译信息的工具 , 并且可以在WindowsPerformanceAnalyzer(WPA)中查看这个编译信息 。 它的最新版本已经包含在了VisualStudio2019Preview版本中 。
1.下面是获取和配置vcperf和WPA的步骤:
1.1下载并安装最新版本的VisualStudio2019Preview 。
1.2下载并安装最新版本的WindowsADK , 里面包含有WPA 。
1.3将VisualStudio2019Preview的MSVC安装目录中的perf_msvcbuildinsights.dll拷贝至WPA目录 。 这个文件是C++BuildInsightsWPA的插件 , 它必须对WPA可见 , 才能正确的显示C++BuildInsights事件 。
a.MSVC的安装目录通常是:C:ProgramFiles(x86)MicrosoftVisualStudio2019PreviewVCToolsMSVC{Version}binHostx64x64
b.WPA的安装目录通常是:C:ProgramFiles(x86)WindowsKits10WindowsPerformanceToolkit1.4在WPA安装目录下打开perfcore.ini文件 , 添加一个perf_msvcbuildinsights.dll文件对应的条目 。 通过这个条目 , 我们可以告诉WPA在其启动时加载C++BuildInsights插件 。
2.下面是收集工程编译信息的步骤:
2.1已管理员权限打开x64NativeToolsCommandPromptforVS2019Preview 。
2.2根据以下步骤获取工程编译信息:
a.执行指令:[vcperf/start/level3MySessionName] 。 /level3选项可以启用模板事件的收集 。
b.在系统的任意地方编译你的工程 , 甚至可以在VisualStudio中进行编译 , 因为vcperf会在整个系统范围收集事件信息 。
c.执行指令:[vcperf/stop/templatesMySessionNameoutputFile.etl] 。 这条指令将会停止信息收集 , 并分析所有事件 , 包括模板事件 , 然后将分析后的结果保存到outputFile.etl文件中 。
3.在WPA中打开刚刚收集好的编译信息文件 。
在WPA中查看头文件扫描信息
C++BuildInsights提供了一个称之为Files的WPA视图 , 通过这个视图 , 我们可以清楚地看到编译器对整个工程中所有头文件扫描的时间 。
在WPA中打开编译信息文件后 , 你可以在GraphExplorer窗格中拖动这个视图到Analysis窗口 , 如下图所示:
文章图片
在这个视图中 , 最为重要的是InclusiveDuration和Count这两列 , 他们显示了对应的头文件的总体扫描时间和这个头文件被包含的次数 。
案例研究:使用vcperf和WPA来为Irrlicht3D引擎创建一个PCH
在这个案例中 , 我们将演示如何使用vcperf和WPA来为Irrlicht这个开源项目创建一个PCH , 并提升40%的编译速度 。
具体的操作步骤如下:
1.克隆Irrlicht工程仓库 。
2.Checkout这个提交版本:97472da9c22ae4a 。
3.以管理员身份打开x64NativeToolsCommandPromptforVS2019Preview并导航到Irrlicht工程的根目录 。
4.执行指令:devenv/upgrade.sourceIrrlichtIrrlicht15.0.sln 。 这条指令将会升级工程的解决方案文件升级到最新版本的MSVC 。
- 从 TPCH 测试学习性能优化技巧之 Q20
- PChome电脑之家荣耀X10颠覆过往普及5G风暴,5月20日升级发布
- PChome电脑之家@迎接清爽 华为nova7 Pro带来纤薄体验,告别臃肿
- PChome电脑之家:97%超高好评率!华为Mate30系列五一最佳入手时机已到
- #iNews新知科技#米途创始人赖洪波:酒店业务已实现盈利前路漫漫
- 『PChome电脑之家』专注细节不论白夜 荣耀 Play4T Pro 拍照体验
- 人生漫漫路呀:小米热度没蹭上,还碰了一鼻子灰!,荣耀X系列新机改名荣耀X10
- 『PChome电脑之家』5G风暴新机荣耀X10马上来,X系列全面升级
- 张清禾▲原油震荡路漫漫,张清禾:4.25黄金调整择高空
- 『PChome电脑之家』荣耀30 Pro+树立真旗舰标杆 有了这些功能才叫真旗舰