Google Ads .NET 用戶端程式庫可簡化應用程式與 Google Ads API,而您需具備最基本的設定。不過 其效能主要取決於程式庫的使用方式,並與 應用程式。
本指南會說明 .NET 應用程式專屬的效能最佳化措施。 可搭配最佳 一般適用於 Google Ads API。
盡可能重複使用 GoogleAdsClient
GoogleAdsClient
表示執行 API 呼叫時的使用者工作階段。這項服務提供
這些最佳化功能包括:
- 快取 gRPC 頻道 提供的 API 服務這樣可以縮短建立初始 API 時的設定時間 呼叫。
- 盡可能重複使用存取權杖。這麼做可減少來回行程的次數 Google Ads .NET 用戶端程式庫才能更新存取權杖。
盡可能使用管理員層級帳戶的存取權杖
- 如果有管理員帳戶層級核發的存取權杖,就可以使用該權杖
對該帳戶中的所有 Google Ads 客戶帳戶進行 API 呼叫
階層與重複使用
GoogleAdsClient
執行個體結合時,可達到以下目的: 進一步減少用戶端程式庫必須執行的來回行程次數 更新存取權杖。
盡可能使用 SearchStream 而非搜尋
雖然 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);
編譯發布子版本的編譯作業
請務必使用「發布」 設定 更是如此使用偵錯設定時 使用完整符號的偵錯資訊進行編譯,且未最佳化。
剖析應用程式效能
針對應用程式的 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 還是搜尋方法
Google Ads API 提供兩種擷取物件的主要方式:Search
方法
(使用分頁) 和 SearchStream
(使用串流)。
SearchStream
的成效優於 Search
,但還有
偏好使用 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>
保留 VM 垃圾收集:
RetainVMGarbageCollection
設定 設定是否放置應刪除的虛擬記憶體區段 待命清單上以供日後使用,或移回作業環境 以及作業系統如要啟用虛擬記憶體保留功能,請將 加入你的應用程式<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
而您可以微調 GC,
工作站和伺服器所有相關
設定
指定於 .NET Core 應用程式的 runtimeconfig.json
檔案
變數,或 .NET SDK 應用程式的 App.config
。