1 个不稳定版本
0.0.1 | 2020年11月18日 |
---|
#95 在 #在线
21KB
393 行
什么是POGO?
POGO代表“在线性能分析生成优化”。你可能会注意到,“这个首字母缩略词的顺序并不正确!”如果UTC可以代表“协调世界时”,那么我觉得我的首字母缩略词可以交换一些字母,听起来更好。
这个库的目的是在运行时优化一个函数。这是通过加载你的代码的仪器版本作为一个共享对象,收集性能分析数据,然后启用性能指导优化重新编译,并最终调用新版本的函数来实现的。
这个库的设计还考虑了容错性。如果在即时编译或优化过程中失败,系统将回滚到使用你的项目编译的版本。
警告:目前这个库非常实验性。我的示例甚至无法正常运行!请勿在生产环境中使用此库。
限制
目前这仅限于无依赖的独立函数。所有函数的代码都必须能够在没有你的应用程序代码的情况下编译。
此外,它不会对动态加载的函数版本应用任何优化或处理调试信息
待办事项
- 调试示例为何无法运行
- 找出如何支持绑定到crate的函数
- 大量的错误处理
- 找到处理所需工具的更好方法
- 日志记录?或者至少删除当前的
println!
依赖关系
~3MB
~59K SLoC