我正在开发一个项目,我对矢量包感到满意,并希望尽可能优化它而不影响构成该项目的其他包。我知道我可以在 defun 中使用以下内容来优化该单个功能
(declare (optimize (speed 3) (safety 0)))
并且“声明”可以用来使效果全球化。
有没有办法优化包中的所有内容,还是在每个函数中声明更安全?
[编辑] 提醒未来的读者:在几乎所有情况下,您都不想使用安全 0。在您的代码中设置此主题之前,请进一步研究此主题,因为如果您遇到非常依赖系统和实现的错误搞砸了
我正在开发一个项目,我对矢量包感到满意,并希望尽可能优化它而不影响构成该项目的其他包。我知道我可以在 defun 中使用以下内容来优化该单个功能
(declare (optimize (speed 3) (safety 0)))
并且“声明”可以用来使效果全球化。
有没有办法优化包中的所有内容,还是在每个函数中声明更安全?
[编辑] 提醒未来的读者:在几乎所有情况下,您都不想使用安全 0。在您的代码中设置此主题之前,请进一步研究此主题,因为如果您遇到非常依赖系统和实现的错误搞砸了
声明的程度取决于实现。在 SBCL 中,我认为您可以使用with-compilation-unit来实现您想要的。但是,我怀疑这对性能目的的效用:大多数时候,性能关键代码集中在少数几个地方,无论您从其余代码中获得什么收益,都不值得牺牲安全性和可调试性。
您还可以在一个或多个表单周围使用LOCALLY 。