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.