Google Ads .NET 客户端库可简化应用与 Google Ads API,只需极少量的配置即可。不过, 该库在很大程度上取决于其使用方式以及与 应用。
本指南介绍了 .NET 应用特有的性能优化,以及 补充了最佳 普遍适用的标准做法 Google Ads API。
尽可能重复使用 GoogleAdsClient
GoogleAdsClient
表示进行 API 调用时的用户会话。它提供
优化措施,例如:
- 缓存 gRPC 渠道 API 服务所用的资源这可以缩短创建初始 API 时的设置时间 调用。
- 尽可能重复使用访问令牌。这样可以减少往返次数 Google Ads .NET 客户端库要刷新访问令牌所必须执行的步骤。
尽可能使用经理账号中的访问令牌
- 如果您有在经理账号级别发放的访问令牌,则可以使用该令牌
针对该账号下的所有 Google Ads 客户账号进行 API 调用
层级结构。结合重复使用
GoogleAdsClient
实例,这可以 进一步减少客户端库必须执行的往返次数 刷新访问令牌。
尽可能使用 SearchStream 而非 Search
而 GoogleAdsService.Search
可以
发送多个分页请求以下载整个报告;
GoogleAdsService.SearchStream
发送一个请求并与 Google Ads API 建立持久连接
无论报表大小如何消除了往返网络时间
需要请求 Search
响应的每个单独页面,具体取决于
与分页相比,SearchStream
可能会提供更高的性能。请参阅
搜索网络与
SearchStream 进行学习
有关此优化的更多信息。
手动管理访问令牌刷新
在某些环境(例如 Google Cloud
函数,那么重复使用这些函数可能无法
GoogleAdsClient
个实例。这种环境可以自带
保留和重复使用数据的做法。在这种情况下,您可以扩展
GoogleAdsConfig
类来执行您自己的访问令牌刷新,如下所示。
// Create your own config class by extending the GoogleAdsConfig class.
class MyGoogleAdsConfig : GoogleAdsConfig
{
public MyGoogleAdsConfig() : base()
{
// Disable the library's in-built channel caching mechanism.
this.UseChannelCache = false;
}
protected override ICredential CreateCredentials()
{
// TODO: Create your own ICredentials object here. You may refer to the
// default implementation of GoogleAdsConfig::CreateCreateCredentials
// for an example.
}
}
// Use your own config class when initializing the GoogleAdsClient instance.
MyGoogleAdsConfig myconfig = new MyGoogleAdsConfig();
GoogleAdsClient client = new GoogleAdsClient(myconfig);
针对发布 build 进行编译
务必使用 Release 功能编译应用 配置 需要注意的一点是使用调试配置时,您的应用 使用完整的符号调试信息编译,并且不进行优化。
分析应用性能
分析应用的 CPU 和内存使用情况,以确定性能 瓶颈。Visual Studio 提供 诊断工具 帮助分析您的应用您还可以看到其他商业分析 工具 可用
使用异步方法
使用 async-await 进行异步编程 范式 有助于避免性能瓶颈 。Google Ads .NET 库为所有服务生成异步方法 和 RPC 方法。
异步方法取消
您可以使用 callSettings
参数将
CancellationToken
异步方法:
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.CancelAfter(3000);
CallSettings callSettings = CallSettings.FromCancellationToken(cancellationTokenSource.Token);
string query = "SELECT campaign.name FROM campaign";
var request = new SearchGoogleAdsStreamRequest()
{
CustomerId = customerId.ToString(),
Query = query,
};
GoogleAdsServiceClient googleAdsService = client.GetService(
Services.V17.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
请尽可能停用日志记录
Google Ads .NET 库默认关闭日志记录功能,并使用延迟记录功能 提升应用性能的方法如果您启用了日志记录 请务必在生产环境中将其关闭。如果您需要监控 对于生产环境中特定的失败请求,您可以执行一个或多个 以下步骤,而不对应用的性能产生不利影响:
- 仅开启摘要日志。
- 将完整日志设置为
ERROR
级别。 - 为您可以分享的特定相关请求保存请求 ID 联系支持渠道
如需了解详情,请参阅日志记录指南。
决定是使用 SearchStream 还是 Search 方法
Google Ads API 提供了两种主要方法来获取对象:Search
方法
(使用分页)和 SearchStream
(使用流式)。
与 Search
相比,SearchStream
的性能更出色,
首选 Search
的场景。
如需了解详情,请参阅流式传输报告指南 这两种方法。
使用 ReadyToRun 选项
.NET Core 3.1 增加了对将二进制文件预编译到特定平台的支持
将 PublishReadyToRun
设置指定为 true
,从而了解架构和架构;
然后在以下代码末尾指定有效的 RuntimeIdentifier
来发布二进制文件:
发布。请参阅有关 ReadyToRun
的指南
功能
。
使用 TieredCompilation
TieredCompilation
可让 .NET 识别热点并改进其
性能分层编译与 ReadyToRun
选项配合使用效果更佳,因为
它可以使用预先生成的图片(如果有)。请参阅有关
TieredCompilation
了解详情。
微调垃圾回收 (GC)
.NET 为垃圾回收 (GC) 提供了两种常规配置文件:工作站 和服务器配置文件这两个配置文件的效果不同 权衡。 使用 Google Ads .NET 库的应用在 一个服务器配置文件中您可以受益于对以下 GC 设置进行微调。
服务器垃圾回收:服务器垃圾回收允许使用 .NET 来为 Google Ads API 应用提供更好的性能 在多个线程上运行请参阅此 指南 了解详情。您可以通过将 以下几行代码添加到应用的
.csproj
文件中。<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
并发垃圾回收:您可以启用并发垃圾回收 垃圾回收 为 .NET GC 第 2 代中的垃圾回收提供专用线程。 在处理较大尺寸的报告时,此设置非常有用。您可以 将以下几行代码添加到 应用的
.csproj
文件。<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
保留虚拟机垃圾回收:
RetainVMGarbageCollection
设置 配置是否将应删除的虚拟内存段放入 备用列表供将来使用,或者被释放回 和操作系统 (OS)。您可以通过添加 以下几行代码添加到您的应用中。<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
通过设置介于 80 到 480 毫秒
工作站和服务器所有相关的
设置
会在 .NET Core 应用的 runtimeconfig.json
文件中指定,此文件是一个环境
变量或 .NET SDK 应用的 App.config
。