您可通过直观的方式或借助 SQL 查询通过 Perfetto 来分析 Protected Audience 竞价。广告技术平台可以将性能分析和 Perfetto 相结合,以衡量 Protected Audience 竞价的效果,包括:
- 出价和评分脚本 CPU 时间
- HTTP 请求(例如键值对服务)的延迟时间
- 冷缓存与热缓存的性能影响
- 自定义受众群体数量的多少
- 信号组的大小
- 以下两种方式的比较:针对所有出价使用同一出价逻辑脚本,或针对每个自定义受众群体使用不同的出价逻辑脚本
设置
克隆 Perfetto 和 Privacy Sandbox 仓库。
git clone https://android.googlesource.com/platform/external/perfetto
git clone https://github.com/android/privacy-sandbox-samples
在 Android Studio 中,从
privacy-sandbox-samples/Fledge/FledgeKotlin
目录下打开 Protected Audience 示例应用。在测试设备或模拟器上构建并安装示例应用。
运行竞价并获取 Perfetto 轨迹
- 设置和部署测试 HTTPS 端点。记下托管端点的网址,因为 Protected Audience 演示版应用需要这些端点才能正常运行。
使用指定的测试端点网址启动演示版应用。将
<test-endpoint-url>
替换为您在上一步中记录的托管端点网址。adb shell am start -n com.example.adservices.samples.fledge.sampleapp/.MainActivity \ -e baseUrl "<test-endpoint-url>"
切换“Shoes CA”,确保至少有 1 个自定义受众群体处于活跃状态。
使用 Privacy Sandbox 开发者工具 GitHub 代码库中的 trace_config.textproto 文件录制轨迹:
./perfetto/tools/record_android_trace \ -c path/to/trace_config.textproto
点按“Run Ad Selection”按钮,然后等待竞价结果。在竞价完成后,输出会显示类似“Would display ad from
http://example.com/bidding/render_shoes
”的消息。在终端中,终止 (CTRL+C)
record_android_trace
程序以完成轨迹。Perfetto 界面会在浏览器中打开并加载轨迹数据。
在 Perfetto 中直观地探索轨迹
在界面顶部的地址栏中搜索“RunOnDeviceAdSelection”。点击 Enter 完成搜索并显示结果:
点击某个轨迹即可仔细检查它。此处提供了执行延迟时间等详细信息。
Protected Audience 专用的轨迹细分
Protected Audience 竞价是一个复杂的过程,并且 Perfetto 轨迹中会捕获许多不同的片段。下表展示了每个轨迹片段所代表的含义。
时间 | 片段 | 说明 | 频率 |
---|---|---|---|
竞价前 | RunOnDeviceAdSelection |
端到端竞价 | 每次竞价 |
出价(买方) | FilterContextualAds |
对内容相关广告执行应用安装和频次上限过滤 | 每次竞价 |
GetBuyersCustomAudience |
从数据库加载买方的自定义受众群体 | 每个买方 | |
FilterCustomAudiences |
对自定义受众群体执行应用安装和频次上限过滤 | 每次竞价 | |
GetTrustedBiddingSignals |
加载买方的出价信号 | 每个买方 | |
RunBiddingPerCustomAudience |
针对单个自定义受众群体的广告出价 | 每个自定义受众群体 | |
GetBuyerDecisionLogic |
从广告资源网或数据库加载买方的 JavaScript(如果已缓存) | 每个自定义受众群体 | |
RunBidding |
买方的 JavaScript 执行 | 每个买方 | |
GenerateBids |
自定义受众群体的 JavaScript 执行 | 每个自定义受众群体 | |
评分(卖方) | GetTrustedScoringSignals |
加载卖方的评分信号 | 每个卖方 |
RunAdScoring |
评分的 JavaScript 执行 | 每次竞价 | |
ScoreAd |
广告的 JavaScript 执行 | 每个广告 | |
GetAdSelectionLogic |
加载卖方的广告选择逻辑 | 每次竞价 | |
RunAdOutcomeSelection |
最终过滤 | 每次竞价 | |
竞价后 | PersistOnDeviceAdSelection |
将竞价结果写入数据库 | 每次竞价 |
查询平均执行延迟时间
Perfetto 可以使用 SQL 查询来精确衡量特定轨迹内发生的情况。
本部分介绍了如何测量 JavaScript 的平均执行延迟时间。
- 在 Perfetto 中,找到左侧导航窗格中的“Query (SQL)”。
输入以下查询:
SELECT AVG(dur) FROM slice WHERE slice.name GLOB 'FetchPayload';
运行查询并检查结果。