这是我第一次尝试使用mongodb补丁。
内核代码修改后,启用cacheDir()的“time scons --mute = MUTE --dd mongod”在Ubuntu上需要大约16分钟。有没有办法在修改内核代码后更快地编译mongod和'all'(在my_repo / src / mongo /中)?
详细信息:
当每次编译花费这么长时间时,对mongodb jira补丁的内核代码实现修复是非常耗时的。只是包含修改后的.h和.cpp文件的源目录的初始编译已经完成了,这很快但我需要最终编译mongod和'all'来逐步开发时运行一些小测试。我浏览了mongodb文档。和其他来源。任何帮助深表感谢。谢谢!
答案 0 :(得分:6)
一些一般提示:
构建more specific target而不是all
。例如,如果你只是改变mongod,那么:scons mongod
。
如果您的系统中有多个处理器,请使用-j numprocs运行scons,例如:scons -j4
用于四核系统。这将并行运行更多作业(默认值为1)。
使用--d
(调试版本);这可以通过优化来构建。
不要使用--dd
(使用_DEBUG和额外断言进行调试构建),除非你真的需要这个并理解额外的开销。
如果您有多台计算机可用,您还可以为多台计算机上的分布式版本设置distcc
。
因此,将上述选项放在一起,更好的命令行(假设有4个可用核心)应该是:scons -j4 --d mongod
。
你没有提到硬件规格,但SSD也让事情变得更快。
使用上述选项快速检查Macbook Air(2.0ghz核心i7,2012年6月之后的型号)的计时。全程是8分15秒;在src / mongo / db /中对cpp文件进行少量更改后的增量构建需要〜30s。