-flto
我有一个构建系统,它通过标志在 clang 中使用长期存在的 LTO 支持。
添加到 LLVM ( https://clang.llvm.org/docs/ThinLTO.html )的 ThinLTO 支持看起来很有趣,但我对在std::thread::hardware_concurrency
已经构建系统的上下文中启动并行处理线程的决定感到有些困惑运行并发作业。
如果您的构建系统已经为每个内核启动一个线程并运行编译和链接作业的混合,那么链接器假设它应该使用所有内核甚至多个内核是否仍然有意义?
或者使用https://clang.llvm.org/docs/ThinLTO.html#controlling-backend-parallelism中记录的标志将 ThinLTO 后台并发减少到 1 是否有意义?删除并行性后,ThinLTO 与普通的普通旧 LTO 相比有什么优势吗?