减少 Boost Python 编译时间

Posted

技术标签:

【中文标题】减少 Boost Python 编译时间【英文标题】:Reducing Boost Python Compilation Time 【发布时间】:2015-07-09 08:24:13 【问题描述】:

我有一个非常大规模的接口,我通过 boost-python 公开,大约有 100 个对象,每个对象大约有 30 个函数。

另外还有枚举定义(平均每个类大约 1 个) 每个类大约有 5 个子类,每个子类大约有 5 个函数。

这看起来确实有很多代码。 (在展开 boost 宏之前,该文件大约有 9K 行代码)

因此在单个 CPU 上编译/链接大约需要 3-4 分钟。有没有一种合理的方法来提高编译时间,例如一个数量级?

在 boost-python 中我不应该做哪些会影响编译时间的事情?

我想到的一个解决方案是将 API 分布在多个文件中,但这并没有真正的帮助,因为其他东西已经与我的 API 并行编译,所以总的来说这不会减少总编译时间,甚至会增加它。 (我的 API 库不会阻碍其他进程)

【问题讨论】:

【参考方案1】:

我会尝试分发多个文件。

您将减少可能导致速度变慢的内存消耗,而且下次构建时您将仅编译修改后的文件,从而显着减少开发期间的编译时间。

详情here。

【讨论】:

谢谢,但这无济于事 - 这是针对始终运行的连续构建,并从头开始构建整个产品。内存消耗也不是问题,构建机器有大量内存。 这应该是公认的答案!它确实通过并行编译每个 cpp 文件来减少编译时间!

以上是关于减少 Boost Python 编译时间的主要内容,如果未能解决你的问题,请参考以下文章

编译时与 Boost.python 链接错误

使用boost python编译在python代码内部调用的c ++代码时出错

无法在 Boost.Python 中使用 __stdcall 编译示例

无法在 Visual Studio 2008 中构建 Boost.python。编译出错

如何使用boost.python中的-fPIC编译静态库

为啥我的由 boost.python 和 c++ 头文件编译的 .so 文件失败了?