假设我有一个名为“includes.cl”的文件,其中有几个函数定义。现在我有两种使用这些功能的方法:
(load "includes.cl")
(load (compile-file "includes.cl"))
后者比前者快吗?我只关心函数调用的运行速度。
假设我有一个名为“includes.cl”的文件,其中有几个函数定义。现在我有两种使用这些功能的方法:
(load "includes.cl")
(load (compile-file "includes.cl"))
后者比前者快吗?我只关心函数调用的运行速度。
要回答您提出的问题,没有办法先验地说您的两种形式中的哪一种更快。但是,您的第二种形式可能会导致“includes.cl”中的函数和宏执行得更快。
更重要的是,就像您不会在C
每次链接某个库时重新编译库一样,您也不应该在Lisp
每次load
.
至少您应该使用类似makeload-compile-maybe
的 Lisp 类似物,例如asdf。
编辑:您使用的 SBCL 没有解释器,只有编译器。这意味着所有代码在执行之前都已编译,因此您问题中的两种形式是等效的。但是,大部分成本是 in compile-file
,而不是 in ,因此编译一次文件然后使用加载它load
是一个非常好的主意(注意缺少文件类型,AKA,扩展名)。(load "includes")