應用程式效能

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