3

这是我第一次尝试处理 mongodb 补丁。

在 Ubuntu 上启用 cacheDir() 的内核代码修改“time scons --mute=MUTE --dd mongod”需要大约 16 分钟。修改内核代码(在 my_repo/src/mongo/ 中)后,有没有办法更快地编译 mongod 和“all”?

细节:

当每次编译都需要这么长时间时,目前为 mongodb jira 补丁修复内核代码非常耗时。仅包含修改后的 .h 和 .cpp 文件的源目录的初始编译已经完成,这相当快,但随着我的增量开发,我最终需要编译 mongod 和 'all' 以运行一些小测试。我浏览了 mongodb 文档。和其他来源。任何帮助深表感谢。谢谢!

4

1 回答 1

6

一些一般提示:

  • 建立一个. 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 文件进行小幅更改后的增量构建耗时约 30 秒。

于 2013-04-19T13:01:19.150 回答