gpt4 book ai didi

common-lisp - 为什么不能并行执行编译文件?

转载 作者:行者123 更新时间:2023-12-05 03:04:27 24 4
gpt4 key购买 nike

我有一个项目,其中有很多文件不是​​由 ASDF 管理的,而是手动编译的。这些文件是完全独立的,能够并行编译它们对我来说似乎是一种减少编译时间的方法。我的计划是并行编译这些文件,然后顺序加载生成的 FASL 文件。但是在我并行编译之后,我发现性能提升几乎为零。然后我去了 SBCL 资源,发现 compile-file takes a world lock ,这实质上是顺序编译。

我的问题是,compile-file 获取这个锁的原因是什么?虽然并行加载 FASL 确实会导致一些竞争条件,但在我看来,Lisp 文件的编译应该是独立的和可并行的。

最佳答案

可以从该语言访问编译器。您可以进行编译时编程,使用编译器宏等。作为示例,有 (eval-when (:compile) …)。一般来说,您不能排除编译时的影响,这必须在任何地方都是线程安全的。我猜想使这种强大的努力比人们愿意投资的要大得多。

不过,您也许可以启动多个 Lisp 镜像进行并行编译。您只需要在编排时处理依赖关系图。

更新:我刚刚偶然发现一段对话似乎暗示 SBCL 比我想象的更接近摆脱那个锁:https://sourceforge.net/p/sbcl/mailman/message/36473674/

关于common-lisp - 为什么不能并行执行编译文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52987524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com