アプリケーションのパフォーマンス

<ph type="x-smartling-placeholder">

Google 広告 .NET クライアント ライブラリを使用すると、アプリと 最小限の構成で Google Ads API を使用できます。全体として パフォーマンスは、ライブラリがどのように使用され、 。

このガイドでは、.NET アプリに固有のパフォーマンスの最適化について説明します。 最良のソリューションを 組織に一般的に適用できるベスト プラクティス Google Ads API。

可能な限り GoogleAdsClient を再利用する

GoogleAdsClient は、API 呼び出しを行うユーザーのセッションを表します。提供するサービス 次のような最適化手法があります。

  • gRPC チャネルのキャッシュ保存 API サービスで使用したりできますこれにより、最初の API を作成するときの設定時間が短縮されます。 できます。
  • 可能な限りアクセス トークンを再利用する。これにより アクセス トークンを更新するために Google 広告 .NET クライアント ライブラリが行う必要がある処理について説明します。

可能であれば、MCC レベルのアカウントのアクセス トークンを使用する

  • MCC アカウント単位で発行されたアクセス トークンがある場合は、 そのアカウントのすべての Google 広告クライアント アカウントに対して API 呼び出しを行う 継承されます。GoogleAdsClient インスタンスの再利用と組み合わせると、 クライアント ライブラリが実行する必要があるラウンド トリップの回数をさらに 更新することもできます。

可能な限り Search ではなく 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);

リリースビルド用にコンパイルする

必ずRelease 構成 サーバーへのデプロイ時に発生しますデバッグ構成を使用すると、 完全なシンボリック デバッグ情報でコンパイルされ、最適化は行われません。

アプリのプロファイリングを行う

CPU 使用率とメモリ使用量の両方についてアプリをプロファイリングしてパフォーマンスを特定する 最適化できますVisual Studio は、 診断ツール アプリのプロファイリングを支援します他にも商用プロファイリング ツール 説明します。

非同期メソッドを使用する

async-await を使用した非同期プログラミング パラダイム パフォーマンスのボトルネックを回避し、アプリケーションの全体的な 説明します。Google 広告 .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 広告 .NET ライブラリでは、デフォルトでロギングがオフになり、遅延ロギングが使用されます。 アプリのパフォーマンスを高めることができますロギングを有効にすると 本番環境では必ず無効にしてください。指標スコープを使用して 本番環境の特定の失敗したリクエストについては、 アプリのパフォーマンスに悪影響を与えることなく、以下の手順に沿って対処します。

  • 概要ログのみをオンにします。
  • 完全なログを ERROR レベルに設定します。
  • 共有可能な特定のリクエストのリクエスト ID を保存する サポートチャネルと連携しています

詳しくは、ロギングガイドをご覧ください。

SearchStream と Search のどちらの方法を使用するかを決定する

Google Ads API でオブジェクトを取得するには、主に 2 つの方法(Search メソッド)を使用します。 (ページ分けを使用)と SearchStream(ストリーミングを使用)があります。

SearchStreamSearch よりもパフォーマンスが優れていますが、 Search が推奨されるシナリオ。

詳しくは、ストリーミング レポートのガイドをご覧ください。 説明します。

ReadyToRun オプションを使用する

.NET Core 3.1 で特定のプラットフォームへのバイナリのプリコンパイルのサポートを追加 PublishReadyToRun 設定を true に指定して、アーキテクチャとアーキテクチャを指定します。 次に、有効な RuntimeIdentifier を指定してバイナリを公開します。 説明します。ReadyToRunのガイドをご覧ください 学びます。 できます。

TieredCompilation を使用する

TieredCompilation を使用すると、.NET でホットスポットを特定して改善できます。 向上します階層化コンパイルは、ReadyToRun オプションを使用する方が効果的であるため、 利用可能な場合は、事前に生成された画像を使用できます。こちらのガイド TieredCompilation をご覧ください。

ガベージ コレクション(GC)をファインチューニングする

.NET では、ガベージ コレクション(GC)用に一般的なプロファイルが 2 つ用意されています。 2 つのプロファイルがありますこの 2 つのプロファイルではパフォーマンスに違いがある トレードオフ。 Google Ads .NET ライブラリを使用するアプリは、実行時にパフォーマンスが向上する傾向がある サーバー プロファイル。次の GC 設定を微調整すると便利です。

  • サーバーのガベージ コレクション: サーバーのガベージ コレクションでは .NET Google Ads API アプリのパフォーマンスを高めます 実行する方法を学びました詳しくは、こちら ガイド をご覧ください。サーバーのガベージ コレクションを有効にするには、 次の行をアプリの .csproj ファイルに追加します。

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • 同時実行ガベージ コレクション: 同時実行 ガベージ コレクション .NET GC に第 2 世代のガベージ コレクション専用のスレッドを持たせました。 この設定は、サイズの大きいレポートを処理する場合に便利です。Google Chat では 同時実行ガベージ コレクションを有効にするには、次の行を アプリの .csproj ファイルに追加します。

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • VM ガベージ コレクションを保持する: RetainVMGarbageCollection 設定 削除する必要がある仮想メモリのセグメントを 将来の使用のためにスタンバイ リストに保存するか、オペレーティング システム(OS)に解放されます。 システム(OS)です。仮想メモリの保持を有効にするには、 次の行をアプリに追加します。

    <PropertyGroup>
      <RetainVMGarbageCollection>true</RetainVMGarbageCollection>
    </PropertyGroup>
    

GC を微調整するには、 構成する必要があります関連する 設定 .NET Core アプリの runtimeconfig.json ファイルで指定されています。つまり、 変数、または .NET SDK アプリの App.config を使用します。