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 library digunakan dan diintegrasikan dengan aplikasi Anda.
Panduan ini membahas pengoptimalan performa yang khusus untuk aplikasi .NET, dan melengkapi praktik terbaik yang umumnya berlaku untuk Google Ads API.
Menggunakan kembali GoogleAdsClient jika memungkinkan
GoogleAdsClient
mewakili sesi pengguna saat melakukan panggilan API. API ini menyediakan
pengoptimalan seperti:
- Menyimpan dalam cache saluran gRPC 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 memuat ulang token akses.
Gunakan token akses dari akun tingkat pengelola jika memungkinkan
- Jika memiliki token akses yang diterbitkan di tingkat akun pengelola, Anda dapat menggunakannya
untuk melakukan panggilan API ke semua akun klien Google Ads dalam hierarki akun
tersebut. Jika digabungkan dengan penggunaan kembali instance
GoogleAdsClient
, hal ini dapat lebih lanjut mengurangi jumlah perjalanan bolak-balik yang harus dilakukan library klien untuk memuat ulang token akses.
Gunakan SearchStream, bukan Penelusuran, jika memungkinkan
Meskipun GoogleAdsService.Search
dapat
mengirim beberapa permintaan yang di-paging 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 respons Search
, bergantung pada
aplikasi Anda, SearchStream
mungkin menawarkan performa yang lebih baik daripada paging. Lihat
Penelusuran versus
SearchStream untuk mempelajari
pengoptimalan ini lebih lanjut.
Mengelola pembaruan token akses secara manual
Di lingkungan tertentu seperti Google Cloud Functions, Anda mungkin tidak dapat menggunakan kembali instance GoogleAdsClient
. Lingkungan tersebut dapat dilengkapi dengan praktik terbaiknya sendiri untuk mempertahankan dan menggunakan kembali data. Dalam kasus seperti itu, Anda dapat memperluas
class GoogleAdsConfig
untuk melakukan pembaruan 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 akan dikompilasi dengan informasi debug simbolis lengkap dan tanpa pengoptimalan.
Membuat profil aplikasi Anda
Buat profil aplikasi Anda untuk penggunaan CPU dan memori guna mengidentifikasi bottleneck performa. Visual Studio menyediakan Alat diagnostik untuk membantu membuat profil aplikasi Anda. Ada juga alat pembuatan profil komersial lain yang tersedia.
Menggunakan metode asinkron
Pemrograman asinkron menggunakan paradigma 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.
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.V19.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
Nonaktifkan logging jika memungkinkan
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 tertentu yang gagal 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 dapat Anda bagikan ke saluran dukungan.
Lihat panduan logging untuk mempelajari lebih lanjut.
Menentukan 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 melakukan prakompilasi biner 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 tingkat berfungsi lebih baik dengan opsi ReadyToRun
karena
dapat menggunakan gambar yang dibuat sebelumnya jika tersedia. Lihat panduan tentang
TieredCompilation
untuk mempelajari lebih lanjut.
Menyesuaikan pembersihan sampah memori (GC)
.NET menyediakan dua profil umum untuk pengumpulan sampah (GC): profil workstation dan profil server. Kedua profil ini memiliki kompromi performa yang berbeda. Aplikasi yang menggunakan library .NET Google Ads cenderung berperforma lebih baik saat dijalankan dalam profil server. Anda dapat memperoleh manfaat dari penyesuaian 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 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 dengan ukuran besar. Anda dapat mengaktifkan pembersihan sampah serentak dengan menambahkan baris berikut ke file
.csproj
aplikasi Anda.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
Retain VM garbage collection: Setelan
RetainVMGarbageCollection
mengonfigurasi apakah segmen memori virtual yang harus dihapus dimasukkan ke dalam daftar standby untuk digunakan pada masa mendatang, atau dirilis 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 memilih penyiapan yang berada di antara
workstation dan server. Semua setelan
yang relevan
ditetapkan dalam file runtimeconfig.json
aplikasi .NET Core, variabel
lingkungan, atau App.config
aplikasi .NET SDK Anda.