#优化 #在线 #性能分析 #PGO #编译 #函数 #版本

pogo

为简单函数提供在线PGO的库

1 个不稳定版本

0.0.1 2020年11月18日

#95#在线

MIT 许可证

21KB
393

什么是POGO?

POGO代表“在线性能分析生成优化”。你可能会注意到,“这个首字母缩略词的顺序并不正确!”如果UTC可以代表“协调世界时”,那么我觉得我的首字母缩略词可以交换一些字母,听起来更好。

这个库的目的是在运行时优化一个函数。这是通过加载你的代码的仪器版本作为一个共享对象,收集性能分析数据,然后启用性能指导优化重新编译,并最终调用新版本的函数来实现的。

这个库的设计还考虑了容错性。如果在即时编译或优化过程中失败,系统将回滚到使用你的项目编译的版本。

警告:目前这个库非常实验性。我的示例甚至无法正常运行!请勿在生产环境中使用此库。

限制

目前这仅限于无依赖的独立函数。所有函数的代码都必须能够在没有你的应用程序代码的情况下编译。

此外,它不会对动态加载的函数版本应用任何优化或处理调试信息

待办事项

  • 调试示例为何无法运行
  • 找出如何支持绑定到crate的函数
  • 大量的错误处理
  • 找到处理所需工具的更好方法
  • 日志记录?或者至少删除当前的println!

依赖关系

~3MB
~59K SLoC