La libreria client .NET di Google Ads semplifica le interazioni della tua app con il l'API Google Ads, con una configurazione minima da parte tua. Tuttavia, nel complesso delle prestazioni dipende dall'utilizzo e dall'integrazione della libreria dell'app.
Questa guida illustra le ottimizzazioni delle prestazioni specifiche delle app .NET. completa il migliore generalmente applicabili ai API Google Ads.
Riutilizza GoogleAdsClient quando possibile
GoogleAdsClient
rappresenta la sessione di un utente quando si effettuano chiamate API. Offre
ottimizzazioni come:
- Memorizzazione nella cache dei canali gRPC utilizzate dai servizi API. Questo riduce i tempi di configurazione quando si esegue l'API iniziale chiamate.
- Riutilizzo dei token di accesso quando possibile. In questo modo si riduce il numero di viaggi di andata e ritorno che la libreria client .NET di Google Ads deve eseguire per aggiornare i token di accesso.
Se possibile, utilizza i token di accesso di un account a livello di amministratore
- Se hai un token di accesso emesso a livello di account amministratore, puoi utilizzarlo
per effettuare chiamate API per tutti gli account cliente Google Ads di tale account
nella gerarchia. Se combinata con il riutilizzo di
GoogleAdsClient
istanze, può ridurre ulteriormente il numero di viaggi di andata e ritorno che la libreria client deve eseguire di aggiornamento dei token di accesso.
Se possibile, utilizza SearchStream anziché Ricerca
Sebbene GoogleAdsService.Search
possa
inviare più richieste impaginate per scaricare l'intero report
GoogleAdsService.SearchStream
invia una singola richiesta e avvia una connessione permanente con l'API Google Ads
a prescindere dalle dimensioni del report. Eliminando il tempo di round trip della rete
necessaria per richiedere ogni singola pagina di una risposta Search
, a seconda
la tua app, SearchStream
potrebbe offrire prestazioni migliori rispetto al paging. Consulta
Ricerca e
SearchStream per saperne di più
ulteriori informazioni su questa ottimizzazione.
Gestire manualmente gli aggiornamenti dei token di accesso
In determinati ambienti, come Google Cloud
Functions, potrebbe non essere possibile riutilizzarle
GoogleAdsClient
istanze. Questi ambienti possono avere il loro meglio
per mantenere e riutilizzare i dati. In questi casi, puoi estendere
GoogleAdsConfig
per eseguire i tuoi aggiornamenti dei token di accesso come segue.
// 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);
Compila per la build della release
Assicurati di compilare la tua app utilizzando l'opzione Release configurazione durante la distribuzione sul server. Quando utilizzi la configurazione di debug, l'app esegue la compilazione con informazioni di debug simboliche complete e nessuna ottimizzazione.
Profila la tua app
Profila la tua app sia per l'utilizzo di CPU che di memoria per identificare le prestazioni colli di bottiglia. Visual Studio fornisce Strumenti di diagnostica per contribuire a profilare la tua app. Esistono anche altre profilazioni commerciali disponibili.
Utilizza metodi asincroni
Programmazione asincrona mediante il comando "async-await" paradigma aiuta a evitare colli di bottiglia nelle prestazioni e a migliorare la reattività generale la tua app. La libreria .NET di Google Ads genera metodi asincroni per tutti i servizi e RPC.
Annullamento metodi asincroni
Puoi utilizzare il parametro callSettings
per trasmettere un
CancellationToken
a metodi asincroni:
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
);
Disattiva il logging quando puoi
La libreria .NET di Google Ads disattiva il logging per impostazione predefinita e utilizza un logging lento che migliora il rendimento dell'app. Se attivi il logging, e assicurati di disattivarla nell'ambiente di produzione. Se hai bisogno di monitorare per specifiche richieste non riuscite in produzione, puoi eseguire una o più senza compromettere le prestazioni dell'app:
- Attiva solo i log di riepilogo.
- Imposta i log completi a livello di
ERROR
. - Salva l'ID richiesta per richieste di interesse specifiche che puoi condividere con i canali di assistenza.
Per ulteriori informazioni, consulta la guida al logging.
Decidere se utilizzare il metodo SearchStream o Search
L'API Google Ads offre due modi principali per recuperare oggetti: il metodo Search
(che utilizza l'impaginazione) e SearchStream
(che utilizza lo streaming).
Il SearchStream
offre un rendimento migliore rispetto a Search
, ma ci sono
scenari in cui è preferibile Search
.
Per ulteriori informazioni, consulta la guida sui report sui flussi di dati. sui due metodi.
Usa l'opzione ReadyToRun
.NET Core 3.1 aggiunge il supporto per la precompilazione dei file binari a una piattaforma specifica
e l'architettura specificando un'impostazione PublishReadyToRun
su true
, e
quindi pubblichi il file binario specificando un valore RuntimeIdentifier
valido quando
pubblicazione. Consulta la guida sul ReadyToRun
funzionalità per apprendere
altro ancora.
Usa TieredCompilation
TieredCompilation
consente a .NET di identificare gli hotspot e di migliorare
le prestazioni dei dispositivi. La compilazione a più livelli funziona meglio con l'opzione ReadyToRun
poiché
può utilizzare l'immagine pregenerata, se disponibile. Consulta la guida su
TieredCompilation
per saperne di più.
Ottimizza la garbage collection (GC)
.NET fornisce due profili generali per la garbage collection (GC): una workstation e un profilo server. Questi due profili hanno prestazioni diverse compromessi. Le app che utilizzano la libreria .NET di Google Ads tendono ad avere prestazioni migliori quando vengono eseguite in un profilo del server. Puoi trarre vantaggio dal perfezionamento delle impostazioni di Google Cloud:
garbage collection del server: la garbage collection del server consente l'utilizzo di .NET per migliorare le prestazioni di un'app con l'API Google Ads che operano su più thread. Vedi questo guida per ulteriori informazioni. Puoi attivare la garbage collection del server aggiungendo il parametro seguenti righe nel file
.csproj
dell'app.<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
Gabage collection simultanea: puoi attivare l'opzione Simultanea garbage collection per dare a .NET GC un thread dedicato per la garbage collection nella seconda generazione. Questa impostazione può essere utile durante l'elaborazione di report di grandi dimensioni. Puoi attiva la garbage collection simultanea aggiungendo le seguenti righe al tuo
.csproj
dell'app.<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
Conserva la garbage collection delle VM: il parametro
RetainVMGarbageCollection
impostazione consente di configurare se i segmenti di memoria virtuale da eliminare vengono in un elenco di standby per un uso futuro oppure vengono rilasciati nuovamente di sistema operativo. Puoi attivare la conservazione della memoria virtuale aggiungendo il metodo le seguenti righe per la tua app.<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
Puoi ottimizzare il GC impostando una configurazione tra
una workstation e un server. Tutte le informazioni pertinenti
impostazioni
vengono specificati nel file runtimeconfig.json
dell'app .NET Core, un ambiente
oppure App.config
dell'app .NET SDK.