我猜这不是火箭科学,但我如何运行已编译的lisp文件?我在Windows下使用emacs和SLIME。从SLIME菜单可以很容易地编译文件,一旦它完成,它会在与我的lisp源相同的目录中吐出一个wx64fsl。如何加载/运行此文件?我通过评估整个代码块来运行文件,并且我被告知运行编译版本的性能要好得多。
答案 0 :(得分:5)
来自SLIME REPL:
,cd
将目录更改为包含lisp文件的目录(load (compile "filename.lisp"))
来自SLIME菜单的OR:
SLIME>编译>编译\加载
所以基本上它非常简单,甚至有一个菜单选项,我最初只是被术语混淆了。希望这将有助于未来的人。
答案 1 :(得分:3)
您的lisp实现是否自动编译功能? OS X上的SBCL适合我。如果是这种情况,我认为除了在加载文件时节省编译时间之外,您不会看到使用编译文件的任何好处。
取自CLHS并在我的REPL设置上测试的示例:
(defun f (x) x)
F
>
(compiled-function-p #'f)
T
>
在实践中,我一直只使用.lisp文件。从来没有投入时间使用Make作为构建工具来自动编译lisp源代码,因为它发生了变化。除了节省编译时间(不加快运行时间)之外,至少在我的设置上,我还没有看到使用编译的fasls带来的任何实际好处。
为了节省编译时间,我使用了一种技术,其中大多数软件包/稳定代码被加载(自动编译)到核心文件中,因此当我开始使用该核心文件并测试一些时,编译时间是最小的.lisp文件中的新代码。
答案 2 :(得分:3)