Performances des applications

La bibliothèque cliente Google Ads .NET simplifie les interactions de votre application avec l'API Google Ads, avec une configuration minimale de votre part. Cependant, les performances globales dépendent principalement de la manière dont la bibliothèque est utilisée et intégrée à votre application.

Ce guide décrit les optimisations de performances propres aux applications .NET et complète les bonnes pratiques applicables de manière générale à l'API Google Ads.

Réutiliser GoogleAdsClient autant que possible

GoogleAdsClient représente la session d'un utilisateur lors des appels d'API. Il offre des optimisations telles que:

  • Mise en cache des canaux gRPC utilisés par les services d'API. Cela réduit le temps de configuration lors des premiers appels d'API.
  • Réutiliser les jetons d'accès si possible Cela réduit le nombre d'allers-retours que la bibliothèque cliente .NET Google Ads doit effectuer pour actualiser les jetons d'accès.

Utiliser les jetons d'accès d'un compte administrateur si possible

  • Si vous disposez d'un jeton d'accès émis au niveau d'un compte administrateur, vous pouvez l'utiliser pour effectuer des appels d'API sur tous les comptes client Google Ads de cette hiérarchie. Lorsqu'elle est combinée à la réutilisation d'instances GoogleAdsClient, cela peut réduire davantage le nombre d'allers-retours que la bibliothèque cliente doit effectuer pour actualiser les jetons d'accès.

Dans la mesure du possible, utilisez SearchStream au lieu de la recherche.

Alors que GoogleAdsService.Search peut envoyer plusieurs requêtes paginées pour télécharger l'intégralité du rapport, GoogleAdsService.SearchStream envoie une seule demande et établit une connexion persistante avec l'API Google Ads, quelle que soit la taille du rapport. En éliminant le temps réseau aller-retour nécessaire pour demander chaque page d'une réponse Search, en fonction de votre application, SearchStream peut offrir de meilleures performances que la pagination. Pour en savoir plus sur cette optimisation, consultez la section Comparaison entre le Réseau de Recherche et SearchStream.

Gérer manuellement les actualisations de jetons d'accès

Dans certains environnements tels que Google Cloud Functions, il n'est pas toujours possible de réutiliser des instances GoogleAdsClient. Ces environnements peuvent disposer de leurs propres bonnes pratiques pour conserver et réutiliser les données. Dans ce cas, vous pouvez étendre la classe GoogleAdsConfig pour effectuer vos propres actualisations de jetons d'accès comme suit.

// 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);

Compiler pour le build

Veillez à compiler votre application à l'aide de la configuration de version lors du déploiement sur le serveur. Lorsque vous utilisez la configuration de débogage, votre application est compilée avec des informations de débogage symboliques complètes sans optimisation.

Effectuer le profilage de votre application

Profiler votre application pour l'utilisation du processeur et de la mémoire afin d'identifier les goulots d'étranglement qui affectent les performances Visual Studio fournit des outils de diagnostic pour vous aider à profiler votre application. D'autres outils de profilage commerciaux sont également disponibles.

Utiliser des méthodes asynchrones

La programmation asynchrone à l'aide du paradigme async-await permet d'éviter les goulots d'étranglement qui affectent les performances et d'améliorer la réactivité globale de votre application. La bibliothèque .NET Google Ads génère des méthodes asynchrones pour tous les services et méthodes RPC.

Désactivez la journalisation lorsque vous le pouvez

La bibliothèque .NET Google Ads désactive la journalisation par défaut et utilise une approche de journalisation différée, qui améliore les performances de votre application. Si vous activez la journalisation, veillez à la désactiver dans l'environnement de production. Si vous devez surveiller des requêtes ayant échoué spécifiques en production, vous pouvez effectuer une ou plusieurs des étapes suivantes sans nuire aux performances de votre application:

  • Activer uniquement les journaux récapitulatifs
  • Définissez les journaux complets au niveau ERROR.
  • Enregistrez l'ID de requête pour les demandes spécifiques qui vous intéressent que vous pouvez partager avec les canaux d'assistance.

Pour en savoir plus, consultez le guide de journalisation.

Choisissez d'utiliser la méthode SearchStream ou Search

L'API Google Ads propose deux méthodes principales pour récupérer des objets: la méthode Search (qui utilise la pagination) et SearchStream (qui utilise le streaming).

SearchStream offre de meilleures performances par rapport à Search, mais dans certains cas, Search est préférable.

Pour en savoir plus sur les deux méthodes, consultez le guide sur les rapports par flux.

Utiliser l'option ReadyToRun

.NET Core 3.1 prend en charge la précompilation de vos binaires sur une plate-forme et une architecture spécifiques en spécifiant un paramètre PublishReadyToRun sur true, puis en publiant le binaire en spécifiant un RuntimeIdentifier valide lors de la publication. Pour en savoir plus, consultez le guide sur la fonctionnalité ReadyToRun.

Utiliser TieredCompilation

TieredCompilation permet à .NET d'identifier les hotspots et d'améliorer ses performances. La compilation à plusieurs niveaux fonctionne mieux avec l'option ReadyToRun, car elle peut utiliser l'image prégénérée lorsqu'elle est disponible. Pour en savoir plus, consultez le guide sur TieredCompilation.

Optimiser la récupération de mémoire

.NET fournit deux profils généraux pour la récupération de mémoire : un profil de poste de travail et un profil de serveur. Ces deux profils présentent des compromis en termes de performances. Les applications qui utilisent la bibliothèque .NET Google Ads ont tendance à offrir de meilleures performances lorsqu'elles s'exécutent dans un profil de serveur. Vous pouvez affiner les paramètres de récupération de mémoire suivants.

  • Récupération de mémoire du serveur:la récupération de mémoire du serveur permet à l'environnement d'exécution .NET d'améliorer les performances d'une application de l'API Google Ads en opérant sur plusieurs threads. Pour en savoir plus, consultez ce guide. Vous pouvez activer la récupération de mémoire du serveur en ajoutant les lignes suivantes au fichier .csproj de votre application.

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • Récupération de mémoire simultanée:vous pouvez activer la récupération de mémoire simultanée pour fournir à .NET un thread dédié à la récupération de mémoire de la génération 2. Ce paramètre peut s'avérer utile lorsque vous traitez des rapports de grande taille. Vous pouvez activer la récupération de mémoire simultanée en ajoutant les lignes suivantes au fichier .csproj de votre application.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • Conserver la récupération de mémoire de la VM:le paramètre RetainVMGarbageCollection détermine si les segments de mémoire virtuelle à supprimer sont placés sur une liste de secours pour une utilisation ultérieure ou s'ils sont remis sur le système d'exploitation (OS). Vous pouvez activer la conservation de la mémoire virtuelle en ajoutant les lignes suivantes à votre application.

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

Vous pouvez affiner la récupération de mémoire en choisissant une configuration située entre une station de travail et un serveur. Tous les paramètres pertinents sont spécifiés dans le fichier runtimeconfig.json de votre application .NET Core, une variable d'environnement ou le App.config de votre application SDK .NET.