Performa aplikasi

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

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

Menggunakan kembali GoogleAdsClient jika memungkinkan

GoogleAdsClient merepresentasikan sesi pengguna saat melakukan panggilan API. Solusi ini memberikan pengoptimalan seperti:

  • Menyimpan saluran gRPC ke dalam cache yang digunakan oleh layanan API. Hal ini mengurangi waktu penyiapan saat melakukan panggilan API awal.
  • Menggunakan kembali token akses jika memungkinkan. Hal ini mengurangi jumlah perjalanan bolak-balik yang harus dilakukan 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 menggunakan kembali instance GoogleAdsClient, hal ini dapat lebih mengurangi jumlah perjalanan bolak-balik yang harus dilakukan library klien untuk memperbarui token akses.

Gunakan SearchStream, bukan Penelusuran jika memungkinkan

Meskipun GoogleAdsService.Search dapat mengirim beberapa permintaan dengan penomoran halaman 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 bolak-balik yang diperlukan untuk meminta setiap halaman dari respons Search, bergantung pada aplikasi Anda, SearchStream dapat menawarkan performa yang lebih baik dibandingkan paging. Lihat Penelusuran versus SearchStream untuk mempelajari pengoptimalan ini lebih lanjut.

Mengelola pembaruan token akses secara manual

Di lingkungan tertentu seperti Google Cloud Functions, penggunaan kembali instance GoogleAdsClient mungkin tidak memungkinkan. Lingkungan tersebut dapat memiliki praktik terbaiknya sendiri untuk mempertahankan dan menggunakan kembali data. Dalam kasus semacam ini, Anda dapat memperluas class GoogleAdsConfig untuk melakukan refresh token akses Anda sendiri seperti 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 akan mengompilasi dengan informasi debug simbolis lengkap dan tanpa pengoptimalan.

Membuat profil aplikasi

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

Menggunakan metode asinkron

Pemrograman asinkron menggunakan paradigm async-await membantu menghindari bottleneck performa dan meningkatkan responsivitas aplikasi Anda secara keseluruhan. Library .NET Google Ads menghasilkan metode asinkron untuk semua layanan dan metode RPC.

Nonaktifkan logging kapan pun Anda bisa

Library .NET Google Ads menonaktifkan logging secara default dan menggunakan pendekatan logging lambat yang meningkatkan performa aplikasi Anda. Jika mengaktifkan logging, pastikan Anda menonaktifkannya di lingkungan produksi. Jika perlu memantau permintaan tertentu yang gagal dalam produksi, Anda dapat melakukan satu atau beberapa langkah berikut tanpa memengaruhi performa aplikasi secara negatif:

  • Aktifkan log ringkasan saja.
  • 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 kedua metode ini lebih lanjut.

Menggunakan opsi ReadyToRun

.NET Core 3.1 menambahkan dukungan untuk mengompilasi biner ke platform dan arsitektur tertentu dengan menentukan setelan PublishReadyToRun ke true, lalu memublikasikan biner dengan menentukan RuntimeIdentifier yang valid saat melakukan publikasi. Lihat panduan 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 sudah dibuat sebelumnya jika tersedia. Lihat panduan tentang TieredCompilation untuk mempelajari lebih lanjut.

Menyempurnakan pembersihan sampah memori (GC)

.NET menyediakan dua profil umum untuk pembersihan sampah memori (GC): profil workstation dan profil server. Kedua profil ini memiliki kekurangan performa yang berbeda. Aplikasi yang menggunakan library .NET Google Ads cenderung berperforma lebih baik saat berjalan di profil server. Anda dapat memanfaatkan penyempurnaan setelan GC berikut.

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

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • Pertahankan pembersihan sampah memori VM: Setelan RetainVMGarbageCollection mengonfigurasi apakah segmen memori virtual yang harus dihapus ditempatkan di daftar standby untuk penggunaan 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 menyesuaikan GC dengan menetapkan penyiapan antara workstation dan server. Semua setelan yang relevan ditentukan dalam file runtimeconfig.json aplikasi .NET Core, variabel lingkungan, atau App.config aplikasi .NET SDK.