Performa aplikasi

Library klien .NET Google Ads menyederhanakan interaksi aplikasi Anda dengan Google Ads API, dengan konfigurasi minimal di pihak Anda. Namun, keseluruhan performa sangat bergantung pada cara library digunakan dan diintegrasikan dengan .

Panduan ini membahas pengoptimalan performa khusus aplikasi .NET, dan melengkapi konten terbaik praktik terbaik yang secara umum berlaku untuk API Google Ads.

Menggunakan kembali GoogleAdsClient jika memungkinkan

GoogleAdsClient mewakili sesi pengguna saat melakukan panggilan API. Menyediakan pengoptimalan seperti:

  • Menyimpan saluran gRPC ke dalam cache digunakan oleh layanan API. Hal ini mengurangi waktu penyiapan saat membuat API awal panggilan telepon.
  • Menggunakan kembali token akses jika memungkinkan. Hal ini mengurangi jumlah perjalanan pulang pergi yang harus dilakukan oleh library klien .NET Google Ads untuk memperbarui token akses.

Menggunakan token akses dari akun tingkat pengelola jika memungkinkan

  • Jika memiliki token akses yang dikeluarkan di tingkat akun pengelola, Anda dapat menggunakannya untuk melakukan panggilan API terhadap semua akun klien Google Ads dalam akun tersebut hierarki sebelumnya. Jika digabungkan dengan penggunaan kembali instance GoogleAdsClient, hal ini dapat mengurangi jumlah perjalanan bolak-balik yang harus dilakukan library klien token akses refresh.

Gunakan SearchStream, bukan Penelusuran, jika memungkinkan

Meskipun GoogleAdsService.Search dapat mengirim beberapa permintaan bernomor halaman untuk mendownload seluruh laporan, GoogleAdsService.SearchStream mengirim satu permintaan dan memulai koneksi persisten dengan Google Ads API terlepas dari ukuran laporan. Dengan mengurangi waktu jaringan bolak-balik, yang diperlukan untuk meminta setiap halaman respons Search, bergantung pada aplikasi Anda, SearchStream dapat menawarkan performa yang lebih baik melalui paging. Lihat Penelusuran versus SearchStream untuk mempelajari lebih lanjut tentang pengoptimalan ini.

Mengelola pembaruan token akses secara manual

Di lingkungan tertentu, seperti Google Cloud, Fungsi, mungkin tidak layak untuk digunakan kembali GoogleAdsClient instance. Lingkungan tersebut dapat memiliki kemampuan untuk mempertahankan dan menggunakan kembali data. Dalam kasus tersebut, Anda dapat memperluas Class GoogleAdsConfig untuk memuat ulang token akses Anda sendiri sebagai berikut.

// 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);

Mengompilasi untuk build rilis

Pastikan Anda mengompilasi aplikasi menggunakan Rilis konfigurasi saat melakukan deployment ke server. Saat menggunakan konfigurasi Debug, aplikasi Anda mengompilasi dengan informasi debug simbolis penuh dan tanpa pengoptimalan.

Membuat profil aplikasi Anda

Membuat profil aplikasi untuk penggunaan CPU dan memori guna mengidentifikasi performa kemacetan. Visual Studio menyediakan Alat diagnostik untuk membantu membuat profil aplikasi Anda. Ada juga pembuatan profil komersial lainnya alat yang tersedia.

Menggunakan metode asinkron

Pemrograman asinkron menggunakan async-await paradigma ini membantu menghindari hambatan kinerja dan meningkatkan responsivitas aplikasi Anda. Library .NET Google Ads menghasilkan metode asinkron untuk semua layanan dan metode RPC.

Pembatalan metode asinkron

Anda dapat menggunakan parameter callSettings untuk meneruskan CancellationToken ke metode asinkron:

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
);

Nonaktifkan logging jika Anda bisa

Library .NET Google Ads menonaktifkan logging secara default dan menggunakan logging lambat yang memberikan performa lebih baik untuk aplikasi Anda. Jika Anda mengaktifkan logging, pastikan Anda menonaktifkannya di lingkungan produksi. Jika Anda perlu memantau untuk permintaan gagal tertentu dalam produksi, Anda dapat melakukan satu atau beberapa langkah berikut tanpa berpengaruh buruk pada performa aplikasi:

  • Hanya aktifkan log ringkasan.
  • Tetapkan log lengkap ke level ERROR.
  • Simpan ID permintaan untuk permintaan minat tertentu yang dapat Anda bagikan dengan saluran dukungan.

Lihat panduan logging untuk mempelajari lebih lanjut.

Tentukan apakah akan menggunakan metode SearchStream atau Penelusuran

Google Ads API menyediakan dua cara utama untuk mengambil objek: metode Search (yang menggunakan penomoran halaman) dan SearchStream (yang menggunakan streaming).

SearchStream memberikan performa yang lebih baik dibandingkan Search, tetapi ada skenario yang lebih memilih Search.

Lihat panduan laporan streaming untuk mempelajari lebih lanjut mengenai kedua metode tersebut.

Gunakan opsi ReadyToRun

.NET Core 3.1 menambahkan dukungan untuk prakompilasi biner Anda ke platform tertentu dan arsitektur dengan menentukan setelan PublishReadyToRun ke true, dan kemudian memublikasikan biner dengan menentukan RuntimeIdentifier yang valid saat publikasi. Lihat panduan tentang ReadyToRun fitur untuk mempelajari banyak lagi.

Gunakan TieredCompilation

TieredCompilation memungkinkan .NET mengidentifikasi hotspot dan meningkatkan tingkat tinggi. Kompilasi bertingkat berfungsi lebih baik dengan opsi ReadyToRun karena dapat menggunakan gambar yang telah dibuat sebelumnya, jika tersedia. Lihat panduan tentang TieredCompilation untuk mempelajari lebih lanjut.

Menyesuaikan pembersihan sampah memori (GC)

.NET menyediakan dua profil umum untuk pembersihan sampah memori (GC): sebuah workstation profil server dan profil server. Kedua profil ini memiliki performa yang berbeda konsekuensinya. Aplikasi yang menggunakan pustaka .NET Google Ads cenderung berperforma lebih baik saat dijalankan dalam profil server. Anda dapat memanfaatkan penyesuaian setelan GC berikut.

  • Pembersihan sampah server: Pembersihan sampah server mengizinkan .NET runtime untuk memberikan performa yang lebih baik pada aplikasi Google Ads API dengan yang beroperasi di beberapa thread. Lihat ini kami untuk mengetahui detail selengkapnya. Anda dapat mengaktifkan pembersihan sampah memori server dengan menambahkan baris berikut ke file .csproj aplikasi Anda.

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • Pembersihan sampah memori serentak: Anda dapat mengaktifkan pembersihan sampah memori serentak pembersihan sampah memori untuk memberi .NET GC thread khusus untuk pembersihan sampah memori di generasi 2. Setelan ini dapat berguna saat memproses laporan dengan ukuran yang besar. Anda dapat aktifkan pembersihan sampah memori serentak dengan menambahkan baris berikut ke file .csproj aplikasi.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • Mempertahankan pembersihan sampah memori VM: RetainVMGarbageCollection setelan mengatur apakah segmen memori virtual yang harus dihapus ditempatkan pada daftar standby untuk penggunaan di masa depan, atau dirilis kembali ke sistem operasi (OS). Anda dapat mengaktifkan retensi memori virtual dengan menambahkan berikut ini ke aplikasi Anda.

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

Anda dapat menyesuaikan GC dengan menentukan pengaturan antara workstation dan server. Semua yang relevan setelan ditentukan dalam file runtimeconfig.json aplikasi .NET Core, yaitu lingkungan variabel, atau App.config aplikasi .NET SDK Anda.