1

这个命令做了哪些优化步骤

`(optimize speed (safety 0))`

我可以在我的 Lisp/Scheme 程序中对其中一些技术进行手工编码吗?

4

3 回答 3

3
  1. 这些东西在 CL 中的作用取决于实现。通常发生的情况是:有一堆优化和其他代码转换可以通过各种权衡应用于您的代码,并且这些声明用作转换为这些单独转换的更高级别的规范。大多数实现还可以让您控制各个设置,但这不是可移植的。
  2. 在 Scheme 中没有这样的标准工具,尽管一些 Scheme 使用了类似的方法。问题是,Scheme 通常(即在标准中)避免了此类“现实世界”问题。可以在这里和那里使用一些优化技术,但这取决于实现。例如,在 PLT 中,您应该做的第一件事是确保您的代码在模块中定义——这确保编译器能够进行一系列优化,例如内联和展开循环。
于 2009-07-08T03:32:41.313 回答
1

I don't know, but I think the SBCL internals wiki might have some starting points if you want to explore.

于 2009-07-08T15:50:34.737 回答
1

更高的速度设置将导致编译器在常量折叠、编译时类型推断(因此消除通用操作的运行时动态调度)和其他代码分析/转换上更加努力;较低的安全性将跳过运行时类型检查、数组绑定检查等。有关更多详细信息,请参阅CMUCL 用户手册的 高级编译器使用和效率提示章节,该章节适用于CMUCLSBCL(或多或少)。

于 2009-07-08T10:55:38.113 回答