Date: 2020/3/6
并行编译的可靠性不高?编译经常卡住,eGateway无版本可用,影响项目进度。
目前eGateway,中央站,Benelink,Jekins的基本工作流如上图所示。
问题:
主要表现是卡住不动。
这个编译,对CPU的有效利用率并不高,比较多的时间花在了编译准备和文件交换上了。
优化策略:
经过优化后,节省20分钟左右
文件签名对网络的访问主要是时间戳
目前的网络连接方式,如下图:
对于网络的交互流程,使用的签名工具,都是没有问题,很验证从这个地方进行优化。
优化策略:
NSIS打包生成eGatewaySetup.exe, eGatewaySteup_PDB.exe
经过分析发生,NSIS脚本编译采用单线程的方式,这两个打包是串行方式。
打包使用的压缩压缩算法为LZMA。这个算法暂不支持多线程。
优化策略:
7z 最初的版本为4.65,使用LZMA压缩算法,对多线程支持不好。
优化策略:
使用7z 16.04,支持LZMA2压缩算法,对多线程支持好。提高压缩速度。
优化前 | 优化后(试验中) |
约2小时10分 | 约1小时10分钟 |
目前优化后的版本还在试用行中,经过初步比对,减少了1个小时左右。
策略:
时间 | 工程或者目标 | Elapse(分钟) |
2020/3/10 2:51:40 | Common | 9.82 |
2020/3/10 3:00:54 | eGatewayCommon | 9.24 |
2020/3/10 3:02:41 | ADTServer | 1.78 |
2020/3/10 3:02:43 | DocServer | 1.82 |
2020/3/10 3:04:37 | FHIRServer | 1.93 |
2020/3/10 3:05:05 | eGatewayDaemon | 0.46 |
2020/3/10 3:05:47 | eGatewayLogsTool | 0.69 |
2020/3/10 3:09:39 | ResultServer | 6.92 |
2020/3/10 3:10:19 | eGatewayUI | 4.53 |
2020/3/10 3:27:30 | CS_MultiBackend | 35.84 |
2020/3/10 3:33:23 | NO_PDB | 2.35 |
2020/3/10 3:41:27 | CONTAIN_PDB | 10.41 |
关键路径及优化:
优化的地方比较多。但考虑好易维护和时间成本。已基本达到预期,暂停止优化。
Benelink不适合使用Incredibuild。或者说对Incredibuild的使用方式不正确。
优化策略:
移除Incredibuild
适用于哪些场景:
1, 单个工程,拥有大量文件的场景。
2, 如果有多个工程时,需要使用sln,并把多个工程依赖组织好,然后再来编译。
目前我们Common工程的依赖关系组织不明确。而且没有sln的方案,没有发挥出并行编译的优势了性能。
不适用哪些场景:
数量多的小工程(文件数量少)的串行化编译
优化前 | 优化后(试验中) |
约1小时30分 | 约16分钟 |
经过初步比对,减少了1个小时10分钟左右。
原文:https://www.cnblogs.com/iamkun2005/p/14137306.html