Prestazioni delle applicazioni

La libreria client .NET di Google Ads semplifica le interazioni dell'app con l'API Google Ads, consentendo una configurazione minima da parte tua. Tuttavia, le prestazioni complessive dipendono molto da come la libreria viene utilizzata e integrata con la tua app.

Questa guida illustra le ottimizzazioni del rendimento specifiche per le app .NET e integra le best practice generalmente applicabili all'API Google Ads.

Riutilizza GoogleAdsClient, ove possibile

GoogleAdsClient rappresenta la sessione di un utente quando si effettuano chiamate API. Offre ottimizzazioni come:

  • Memorizzazione nella cache dei canali gRPC utilizzati dai servizi API. In questo modo si riducono i tempi di configurazione quando si effettuano chiamate API iniziali.
  • Riutilizzo dei token di accesso quando possibile. In questo modo si riduce il numero di round trip che la libreria client .NET di Google Ads deve eseguire per aggiornare i token di accesso.

Utilizzare i token di accesso di un account a livello di amministratore, se possibile

  • Se disponi di un token di accesso emesso a livello di account amministratore, puoi utilizzarlo per effettuare chiamate API per tutti gli account cliente Google Ads in questa gerarchia di account. Se combinata con il riutilizzo delle istanze GoogleAdsClient, ciò può ridurre ulteriormente il numero di round trip che la libreria client deve eseguire per aggiornare i token di accesso.

Se possibile, utilizza SearchStream anziché Ricerca

Mentre GoogleAdsService.Search può 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 indipendentemente dalle dimensioni del report. Eliminando il tempo di rete di andata e ritorno necessario per richiedere ogni singola pagina di una risposta Search, a seconda della tua app, SearchStream potrebbe offrire prestazioni migliori rispetto al paging. Consulta la sezione Confronto tra Ricerca e SearchStream per scoprire di più su questa ottimizzazione.

Gestire manualmente gli aggiornamenti dei token di accesso

In alcuni ambienti come Google Cloud Functions, potrebbe non essere possibile riutilizzare le istanze GoogleAdsClient. Questi ambienti possono includere le best practice per la persistenza e il riutilizzo dei dati. In questi casi, puoi estendere la classe GoogleAdsConfig per eseguire 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 build della release

Assicurati di compilare l'app utilizzando la configurazione della release quando esegui il deployment sul server. Quando utilizzi la configurazione di debug, la tua app compila informazioni di debug simboliche complete senza ottimizzazione.

Profila la tua app

Profila la tua app per l'utilizzo di CPU e memoria per identificare i colli di bottiglia delle prestazioni. Visual Studio fornisce strumenti di diagnostica per aiutarti a profilare la tua app. Sono disponibili anche altri strumenti di profilazione commerciale.

Utilizza metodi asincroni

La programmazione asincrona utilizzando il paradigma di attesa asincrona aiuta a evitare colli di bottiglia delle prestazioni e a migliorare la reattività complessiva della tua app. La libreria .NET di Google Ads genera metodi asincroni per tutti i servizi e i metodi RPC.

Disattiva il logging quando puoi

La libreria .NET di Google Ads disattiva il logging per impostazione predefinita e utilizza un approccio di logging lento che migliora le prestazioni dell'app. Se attivi il logging, assicurati di disattivarlo nell'ambiente di produzione. Se devi monitorare specifiche richieste non riuscite in produzione, puoi eseguire uno o più dei seguenti passaggi senza influire negativamente sulle prestazioni dell'app:

  • Attiva solo i log di riepilogo.
  • Imposta i log completi su ERROR livello.
  • Salva l'ID richiesta per le richieste specifiche di interesse che puoi condividere con i canali di assistenza.

Per ulteriori informazioni, consulta la guida alla registrazione.

Decidi se utilizzare il metodo SearchStream o il metodo di ricerca

L'API Google Ads offre due modi principali per recuperare gli oggetti: il metodo Search (che utilizza l'impaginazione) e SearchStream (che utilizza i flussi di dati).

SearchStream offre prestazioni migliori rispetto a Search, ma ci sono scenari in cui Search è preferibile.

Per scoprire di più sui due metodi, consulta la guida ai report sui flussi di dati.

Utilizza l'opzione ReadyToRun

.NET Core 3.1 aggiunge il supporto per la precompilazione dei file binari su una piattaforma e un'architettura specifiche specificando un'impostazione PublishReadyToRun su true. Quindi, pubblica il programma binario specificando un valore RuntimeIdentifier valido al momento della pubblicazione. Consulta la guida alla funzionalità di ReadyToRun per saperne di più.

Usa la compilation a più livelli

TieredCompilation consente a .NET di identificare gli hotspot e migliorarne le prestazioni. La compilazione a più livelli funziona meglio con l'opzione ReadyToRun, poiché può utilizzare l'immagine pregenerata, se disponibile. Per saperne di più, consulta la guida su TieredCompilation.

Ottimizzare la garbage collection (GC)

.NET fornisce due profili generali per la garbage collection (GC): un profilo di workstation e un profilo server. Questi due profili presentano combini di prestazioni diversi. Le app che utilizzano la libreria Google Ads .NET tendono ad avere prestazioni migliori se eseguite in un profilo server. Puoi trarre vantaggio dal perfezionamento delle seguenti impostazioni di GC.

  • Garabage collection server: la garbage collection server consente al runtime .NET di migliorare le prestazioni di un'app dell'API Google Ads operando su più thread. Consulta questa guida per ulteriori dettagli. Puoi attivare la garbage collection del server aggiungendo le seguenti righe al file .csproj dell'app.

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • Garbage collection simultanea: puoi attivare la garbage collection simultanea per assegnare a .NET GC un thread dedicato per la garbage collection nella generazione 2. Questa impostazione può essere utile durante l'elaborazione di report di grandi dimensioni. Puoi attivare la garbage collection simultanea aggiungendo le seguenti righe al file .csproj dell'app.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • Conserva garbage collection VM: l'impostazione RetainVMGarbageCollection consente di configurare se i segmenti di memoria virtuale che devono essere eliminati vengono inseriti in un elenco in standby per uso futuro o se vengono rilasciati nuovamente nel sistema operativo (OS). Puoi attivare la conservazione della memoria virtuale aggiungendo le seguenti righe alla tua app.

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

Puoi perfezionare il GC impostando una configurazione tra una workstation e un server. Tutte le impostazioni pertinenti sono specificate nel file runtimeconfig.json dell'app .NET Core, in una variabile di ambiente o nel campo App.config dell'app .NET Core.