Common Lisp:`load`做`compile-file`的事情吗?

时间:2013-09-08 02:56:18

标签: compilation load common-lisp

假设我有一个名为“includes.cl”的文件,其中有几个函数定义。现在我有两种方法可以使用这些功能:

  1. (load "includes.cl")
  2. (load (compile-file "includes.cl"))
  3. 后者比前者快吗?我只关心函数调用的运行速度。

1 个答案:

答案 0 :(得分:4)

要回答你问的问题,没有办法先验地说明你的两种表格中的哪一种更快。但是,您的第二个表单可能会导致“includes.cl”中的函数和宏执行得更快。

更重要的是,就像每次链接某个文件时都不会重新编译C库一样,在每个{{3}之前,你不应该recompile Lisp库。 }}

至少你应该使用load之类的东西或load-compile-maybe的Lisp类似物,例如make

编辑:您正在使用没有解释器的SBCL,只有编译器。这意味着所有代码在执行之前都已编译,因此问题中的两个表单是等效的。但是,大部分费用都在compile-file,而不在load,所以编译文件一次然后使用{{1}加载它是一个非常好的主意。 (注意缺少文件类型,AKA,扩展名)。