PGO:为什么XCode生成一个空的.profdata文件?

时间:2017-01-24 21:36:26

标签: ios xcode llvm xcode8 pgo

我正在尝试在XCode 8中使用配置文件引导优化。

我按照说明here进行了操作。我确保使用XCode中的停止按钮终止我的应用程序,如文档中所述。

我验证了编译和链接命令包含-fprofile-instr-generate参数。

该过程成功生成了一个.profdata文件,但该文件只有1064个字节,考虑到我的程序在配置文件生成期间执行了数十或数十万个函数调用,这似乎非常小。运行“xcrun -sdk iphoneos llvm-profdata show <profdata file>”会产生此输出:

Total functions: 0
Maximum function count: 0
Maximum internal block count: 0

这似乎表明我的profdata文件完全是空的!

此时,我非常困难,我不确定如何生成有效的.profdata文件。有人可以提供指导吗?

1 个答案:

答案 0 :(得分:1)

生成优化配置文件时,以某种方式退出应用程序非常重要。

尽管有相反的Apple文档,但我发现通过按XCode中的“停止”按钮退出应用程序不会生成有效的配置文件 - 相反,它会生成1064字节的配置文件零功能。

我已经了解到通过调用exit(0)或通过iOS界面终止应用程序退出应用程序(在iOS 10中:双击主页按钮,向上滑动)正确生成个人资料。就我而言,正确生成的配置文件是34兆字节。