compilation - 通用 Lisp : Does `load` do `compile-file` things?

标签 compilation load common-lisp

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

  • (load "includes.cl")
  • (load (compile-file "includes.cl"))

  • 后者比前者快吗?我只关心函数调用的运行速度。

    最佳答案

    要回答您提出的问题,无法先验地说出您的两种形式中的哪一种更快。但是,您的第二种形式可能会导致“includes.cl”中的函数和宏执行得更快。

    更重要的是,就像您不会重新编译 C 一样。每次你针对它链接一些东西时,你不应该recompile Lisp每次图书馆前 load .

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

    编辑:您使用的 SBCL 没有解释器,只有编译器。这意味着所有代码在执行之前都已编译,因此您问题中的两种形式是等效的。然而,大部分成本在 compile-file ,不在 load ,因此最好先编译一次文件,然后使用 (load "includes") 加载它。 (注意缺少文件类型,AKA,扩展名)。

    关于compilation - 通用 Lisp : Does `load` do `compile-file` things?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18679949/

    相关文章:

    .net - 在两个位置编译类

    c++ - FFTW编译错误c++

    javascript - Safari 5 扩展无需打开窗口即可加载 URL

    list - 普通口齿不清 : Attach x recursively to list

    scope - 为什么这个函数每次都返回不同的值?

    lisp - 检查 lisp 中是否存在某个项目

    compilation - Toolkit.UWP 更新到 V5.0 后,应用程序无法在 X64 中编译(但在 X86 中正确编译)

    angular - 将 Bearer token 传递给不同的 APP_INITIALIZER 以从 Angular App 中的服务器加载配置

    c++ - 如何从动态加载库中执行未知函数?

    linux - 平均负载会影响性能吗?