我看到了 Facebook 的 Keith Adams 所做的 talk,比较了机器学习技术和调整代码以提高现实世界性能的方法。有没有类似自动化技术在实际项目中应用的例子?我知道某些编译器中有基于剖面的优化以及一些 JIT 编译器使用的技术来提高性能,但我想到的是更根本的改进代码性能的方式,可能需要改变代码本身而不是代码生成。例如:
- 选择特定网络应用程序的最佳缓冲区大小或为特定应用程序选择正确的堆栈大小。
- 在多线程应用程序中选择结构布局,以提高本地缓存性能同时减少虚假共享。
- 为某个算法选择完全不同的数据结构。