我刚刚完成并测试了常见的lisp应用程序的核心,并希望现在优化速度。它适用于SBCL并使用CLOS。
有人可以概述优化代码速度的方法吗?
我必须从哪里开始?我是否只需要提供一些全局声明,或者我是否必须为每个绑定提供类型信息?有没有办法找出我的代码的哪些部分可以用更多的类型信息更好地编译?
该程序大量使用单个1维数组0..119,它可以转移CLOS实例。
谢谢你提前!
答案 0 :(得分:3)
在真空中进行优化并不是很好,因为你可以引入的丑陋没有限制,可以让事情快一点点。
如果速度不够快,定义成功的含义会有所帮助,因此您知道何时停止。
考虑到这一点,一个好的第一步是在profiler(sb-sprof)下运行你的项目,以了解花费的时间。如果它是通用算术,它可以帮助在内循环中明智地使用模运算。如果它在CLOS中,它可能有助于切换到关键位数据的结构。无论最浪费的是什么,都会指导您在优化中花费精力。
我认为,如果在分析后,您发布了一个后续问题,可能会有所帮助:“我的程序花了很多时间花在<foo>
上,如何让它更快?”