为什么要写这个脚本
我的脚本是根据 @xiaohui 那个修改的,而源头来自 @abit 和 @furion 。
他们的脚本用CMake生成的标准Makefile来编译,无法充分利用现代硬件的性能,编译过程很慢。我在双路至强服务器上测试要花半小时,即使用make -j 8也无济于事。所以我修改了他们的脚本,用Ninja-build这个超快的工具来组织编译。
如何使用这个脚本
从如下位置下载最新版脚本并运行:
https://github.com/adoal/install-steemd-fast/raw/master/install-steemd.sh
chmod +x install-steemd.sh
./install-steemd.sh
当然也可以根据脚本里面写的步骤手工运行。
加速原理
Steem源代码是用C++写的,用了boot库,编译这种重度使用模板的C++代码耗时极长。传统的Nakefile只能一个一个文件顺序编译,理论上可以用-j指令来并行启动多个make任务但要看具体情况,未必总有用。
Steem的编译系统用的是CMake。其实它并不是底层真正的编译系统,而是根据规则生成编译指令的工具,所以我们除了Makefile之外也可以试试其它后端,比如更加新潮的Ninja-build,默认会根据CPU内核数来运行
在真实硬件上的比较:HP Proliant BL460c G7服务器,双路Xeon 5650六核服务器,主频2.67GHz,48GiB内存。标准的Makefile编译正好需要半小时,用Ninja-build则缩短为7分半。之所以加速仅有4倍而不是12倍,因为子任务之间的依赖导致编译过程不可能完全并行。但是时间缩短到1/4已经很让人惊喜啦。