Performa aplikasi

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

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

Gunakan kembali GoogleAdsClient jika memungkinkan

GoogleAdsClient mewakili sesi pengguna saat melakukan panggilan API. Layanan ini menyediakan pengoptimalan seperti:

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

Gunakan 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 hierarki akun tersebut. Jika digabungkan dengan penggunaan kembali instance GoogleAdsClient, hal ini dapat semakin mengurangi jumlah perjalanan pulang pergi yang harus dilakukan library klien untuk memperbarui token akses.

Gunakan SearchStream, bukan Search, jika memungkinkan

Meskipun GoogleAdsService.Search dapat mengirim beberapa permintaan yang dipaginasi untuk mendownload seluruh laporan, GoogleAdsService.SearchStream mengirim satu permintaan dan memulai koneksi persisten dengan Google Ads API terlepas dari ukuran laporan. Dengan menghilangkan waktu jaringan pulang pergi yang diperlukan untuk meminta setiap halaman respons Search, bergantung pada aplikasi Anda, SearchStream mungkin menawarkan performa yang lebih baik daripada penomoran halaman. Lihat Penelusuran versus SearchStream untuk mempelajari lebih lanjut pengoptimalan ini.

Mengelola refresh token akses secara manual

Di lingkungan tertentu seperti Google Cloud Functions, instance GoogleAdsClient mungkin tidak dapat digunakan kembali. Lingkungan tersebut dapat memiliki praktik terbaiknya sendiri untuk mempertahankan dan menggunakan kembali data. Dalam kasus seperti itu, Anda dapat memperluas class GoogleAdsConfig untuk melakukan penggantian 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 konfigurasi Rilis saat men-deploy ke server. Saat menggunakan konfigurasi Debug, aplikasi Anda dikompilasi dengan informasi debug simbolik lengkap dan tanpa pengoptimalan.

Membuat profil aplikasi Anda

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

Menggunakan metode asinkron

Pemrograman asinkron menggunakan paradigma async-await membantu menghindari hambatan performa dan meningkatkan responsivitas aplikasi secara keseluruhan. 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.V20.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 pendekatan logging lambat yang memberikan performa yang lebih baik untuk aplikasi Anda. Jika Anda mengaktifkan logging, pastikan Anda menonaktifkannya di lingkungan produksi. Jika perlu memantau permintaan yang gagal tertentu dalam produksi, Anda dapat melakukan satu atau beberapa langkah berikut tanpa memengaruhi performa aplikasi secara negatif:

  • Aktifkan hanya log ringkasan.
  • Tetapkan log lengkap ke tingkat ERROR.
  • Simpan ID permintaan untuk permintaan tertentu yang menarik yang dapat Anda bagikan dengan saluran dukungan.

Lihat panduan pencatatan aktivitas untuk mempelajari lebih lanjut.

Tentukan apakah akan menggunakan metode SearchStream atau Search

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 daripada Search, tetapi ada skenario saat Search lebih disukai.

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

Menggunakan opsi ReadyToRun

.NET Core 3.1 menambahkan dukungan untuk mengompilasi biner Anda sebelumnya ke platform dan arsitektur tertentu dengan menentukan setelan PublishReadyToRun ke true, lalu memublikasikan biner dengan menentukan RuntimeIdentifier yang valid saat memublikasikan. Lihat panduan tentang fitur ReadyToRun untuk mempelajari lebih lanjut.

Menggunakan TieredCompilation

TieredCompilation memungkinkan .NET mengidentifikasi hotspot dan meningkatkan performanya. 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 pengumpulan sampah (GC)

.NET menyediakan dua profil umum untuk pengumpulan sampah (GC): profil workstation dan profil server. Kedua profil ini memiliki perbedaan kompromi performa. Aplikasi yang menggunakan library .NET Google Ads cenderung memiliki performa yang lebih baik saat dijalankan dalam profil server. Anda dapat memperoleh manfaat dari penyesuaian setelan GC berikut.

  • Pengumpulan sampah server: Pengumpulan sampah server memungkinkan runtime .NET memberikan performa yang lebih baik pada aplikasi Google Ads API dengan beroperasi di beberapa thread. Lihat panduan ini untuk mengetahui detail selengkapnya. Anda dapat mengaktifkan pengumpulan sampah 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 untuk memberi GC .NET thread khusus untuk pembersihan sampah memori di generasi 2. Setelan ini dapat berguna saat memproses laporan berukuran besar. Anda dapat mengaktifkan pengumpulan sampah serentak dengan menambahkan baris berikut ke file .csproj aplikasi Anda.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • Mempertahankan pengumpulan sampah VM: Setelan RetainVMGarbageCollection mengonfigurasi apakah segmen memori virtual yang harus dihapus dimasukkan ke dalam daftar tunggu untuk digunakan di masa mendatang, atau dilepaskan kembali ke sistem operasi (OS). Anda dapat mengaktifkan retensi memori virtual dengan menambahkan baris berikut ke aplikasi Anda.

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

Anda dapat menyetel GC dengan memilih penyiapan yang berada di antara workstation dan server. Semua setelan yang relevan ditentukan dalam file runtimeconfig.json aplikasi .NET Core, variabel lingkungan, atau App.config aplikasi .NET SDK.