On peut vous aider ?

Cherchez des réponses ou parcourez les rubriques de notre documentation

Voir aussi:

< All Topics
Print

Optimisation des performances

Cet article recense quelques points de vigilance dans le cas de documents volumineux (i.e. aux données volumineuses ou avec un grand nombre de formules).

Document

Version

De manière générale utiliser la dernière version des modules. Des améliorations sont constamment réalisées aussi bien en termes de fonctionnalités que de performances.

Formules

Le nombre de formules du document est accessible dans Design via le menu « Outils \ Estimation de la volumétrie dans Answer »

De manière générale si le document comprend plus de 100 000 formules, il est souhaitable de chercher à l’optimiser.

Supprimer toutes les formules redondantes : pointer sur une cellule contenant un calcul déjà effectué si ce dernier est long (EQUIV, NB.SI, SOMME.SI, et…).

Utiliser avec parcimonie toutes les fonctions coûteuses :

Les fonctions volatiles en trop grand nombre ou référencées trop fréquemment (les formules qui dépendent des cellules contenant un calcul volatile sont elles aussi recalculées pour toute saisie dans n’importe quelle cellule)

  • MAINTENANT
  • DECALER
  • INDIRECT

Les fonctions de recherche

  • RECHERCHEV
  • RECHERCHEH
  • RECHERCHE
  • EQUIV
  • NB.SI
  • NB.SI.ENS
  • SOMME.SI
  • SOMME.SI.ENS

De plus, les fonctions de recherche NB.SI, NB.SI.ENS, SOMME.SI et SOMME.SI.ENS ne devraient pas être utilisées avec des critères de texte convertibles en numériques sur de grandes plages contenant des chaînes (comme dans Excel, les chaînes subiront une tentative de conversion en numérique).

Utiliser systématiquement une combinaison INDEX(EQUIV en lieu et place des RECHERCHEV

Avantages de la combinaison INDEX(EQUIV :

  • l’ajout de lignes et de colonnes dans les zones de recherche ne demande pas à revoir les numéros de colonne (comme dans le RECHERCHEV)
  • le résultat de la recherche (EQUIV) peut être calculé dans une cellule séparée si l’on souhaite le réutiliser

Réduire la taille des constantes de chaînes utilisées dans les formules et/ou inscrire les chaînes dans des cellules séparées et pointer dans la formule vers ces cellules.

Composants

Supprimer tous les composants inutiles (exemple des contrôles contenant des formules dont les résultats ne nous sont pas utiles lors de l’intégration)

Dans des listes déroulantes avec une forte volumétrie (plus de 2000 entrées),

  • Essayer d’utiliser au maximum des listes liées avec la syntaxe DECALER pour la source de données.
  • Essayer d’utiliser des listes déroulantes ouvertes (autorisant la saisie avec le flag E) et vérifier par une contrainte de validation (via un EQUIV) l’appartenance de l’élément saisi à la liste. Dans certains cas, l’amélioration peut être significative lors de la vérification des contraintes.

Utiliser des composants sans réponse (flag NR) lorsque le composant est un contrôle personnalisé dont on ne veut pas récupérer la valeur lors de l’intégration (correspond généralement à tous les cas de listes de référence dans des motifs sans modification, ajout ou suppression de la part du correspondant).
Cette optimisation n’est utile que pour une version de GT<3.9

Motifs

Dès qu’un motif atteint plus de 5000 lignes une grande vigilance est de rigueur.

Le range de base du motif (cellules dupliquées du motif) doit être examiné avec soin pour éliminer tout calcul inutile ou redondant ou ne relevant pas d’une nécessité absolue.

Si un motif possède un grand nombre de lignes modifiables, les données de celui-ci ne seront probablement pas saisies dans le questionnaire directement mais à partir d’un import Excel (peu de gens éditeront plus de 5000 lignes sans utiliser du copier/coller à partir d’autres lignes ou d’autres sources de données) : il ne faut pas alors hésiter à sacrifier l’ergonomie du questionnaire (mise en forme, verrous, …) au profit de la performance, le questionnaire servant alors de véhicule et vérificateur de données plutôt que d’interface de saisie.

Lors de l’import Excel, les verrous sont très coûteux : ils sont en effet vérifiés sur chacune des lignes importées pour s’assurer que GTAnswer a effectivement le droit d’inscrire la valeur dans telle cellule après que les cellules sans verrous aient été entrées (un calcul de dépendance à partir des formules de verrous est effectué mais la vérification lors de l’import Excel reste coûteuse).
Il est alors préférable de remplacer les verrous par des contraintes (gtcontrainte).

Multi-onglets

Lorsque le nombre de multi-onglets devient grand (et que des synthèses hors multi-onglets sont requises), des limitations à l’utilisation peuvent entrer en jeu, aussi bien pour l’utilisation dans GTAnswer que l’export Excel (cf Limitations synthèse multi-onglets)

Affichage

Ne spécifier dans les mises en forme conditionnelles que des formules simples : les calculs devraient être faits dans la feuille. Ceci permet :

  • d’accroître les performances de l’affichage
  • de factoriser certains calculs
  • de pouvoir plus facilement repérer les dépendances entre formules (l’outil d’audit des formules d’Excel ne recherche pas les dépendances dans les formules contenues dans les mises en forme conditionnelles

Eviter les zoom inférieurs à 50%

Mémoire

Vérifier la mémoire utilisée par GTAnswer lorsque le document est chargé.

Il est nécessaire d’envisager sérieusement la redécoupe ou la restructuration d’un questionnaire occupant plus de 1 Go ( scinder en plusieurs questionnaires ou déporter certains éléments dans une matrice de saisie, optimiser les formules ou les données redondantes, etc…).

Transposition

Si plusieurs transpositions avec le même nombre de dimensions adressent l’une ou l’autre un grand nombre de composants (quelques milliers ou dizaine de milliers), il est préférable d’ajouter une ou des dimension(s) fictive(s) à l’une ou l’autre, de façon à ce qu’elles puissent être différenciées par le nombre de dimensions.
Ceci afin d’optimiser les traitements par GTServer.

Import Excel

Les verrous sont très coûteux lors de l’import Excel : ils sont en effet vérifiés (donc recalculés) après entrée de chaque valeur à importer pour s’assurer que GTAnswer a effectivement le droit d’inscrire la valeur dans telle cellule après que les cellules sans verrous aient été entrées (un calcul de dépendance à partir des formules de verrous est effectué mais la vérification lors de l’import Excel reste coûteuse).
Si un très grand nombre de cellules sont concernées par l’import Excel (que cela soit au travers de transpositions ou au travers de motifs ou autres), il est alors préférable de remplacer les verrous par des contraintes (gtcontrainte).
Vous pouvez vous assurer que les temps d’attente dépendent des verrous en supprimant tous les verrous et en vérifiant les temps d’import Excel-GTAnswer. Vous pouvez également vérifier quels sont les verrous qui constituent des goulets d’étranglement en procédant par dichotomie lors de la suppression de la déclaration des verrous ou en vérifiant le nombre de cellules contenant des composants à saisir qui interviennent dans le calcul de la condition du verrou.

Enfin, si un très grand nombre de composants sont déclarés dans le questionnaire, ce qui se produit par exemple lorsque des transpositions sont utilisées, chacun de ces composants devra avoir un équivalent sous forme de nom de zone dans Excel. Or, Excel ne gère pas de manière optimale plusieurs milliers de noms de zones dans le même classeur (en comptant les zones globales et locales dans le cas d’un questionnaire multi-onglets). L’import Excel peut donc être ralenti par le dialogue Excel-GTAnswer si les transpositions concernent un très grand nombre de composants.
Utilisez préférablement des motifs lorsque cela est possible.
Vous pouvez vérifier que le grand nombre de zones nommées dans Excel constitue un goulet d’étranglement de l’import Excel-GTAnswer lorsque, après avoir choisi l’import Excel puis le classeur dans GTAnswer, la boîte de dialogue de choix des onglets à importer met un temps non négligeable à s’afficher.

Intégration des données

Déterminer les étapes de l’intégration consommatrices en ressources. Pour cela activer le dump des requêtes SQL dans les logs (via l’onglet Général dans GTAdmin). L’intégration se déroule en plusieurs étapes :
– Extraction des données du compartiment
– Extraction de la réponse à intégrer (validée ou dernière)
– Transposition
– Création de la table d’accueil (ou utilisation de la table intermédiaire d’intégration)
– Insertion des enregistrements
– Construction par SQL de la table des clés/pivots, placement des INDEX. Dans le cas des mises à jour sur champs-clés, création de la table des enregistrements à insérer.
– Suppression (si pivot) par SQL des enregistrements dans la table finale
– Insertion des enregistrements de la table intermédiaire/temporaire dans la table finale

L’examen des logs va permettre de déterminer les étapes les plus coûteuses et d’agir en conséquence (intégrer seulement les réponses validées, modifier les définitions de transposition, placer des index sur certaines tables, préparer certaines tables, etc…)

Autres suggestions :

Augmenter la mémoire disponible sur la machine hébergeant GTServer.

Isoler sur des machines physiques différentes GTServer et le serveur de base de données hébergeant la base GT et la base client.

Placer des index éventuellement uniques sur les axes pivots ou sur les champs clés dans les tables de destination.
Les index devraient idéalement être uniques dans le cas de mises à jour sur champs clés.

Utiliser des tables intermédiaires d’intégration (même sans vue intermédiaire d’intégration) sur lesquelles des index correspondants aux champs pivots ou aux clés devraient être construits
Idéalement ces index devraient être uniques et couvrants dans le cas de mises à jour sur champs clés.

Essayer de n’intégrer que la réponse validée.

Maintenance de GTServer

Consultez le guide d’installation qui contient des paragraphes sur la maintenance et l’amélioration du fonctionnement.

Was this article helpful?
0 out Of 5 Stars
5 Stars 0%
4 Stars 0%
3 Stars 0%
2 Stars 0%
1 Stars 0%
5
How can we improve this article?
How Can We Improve This Article?
Table of Contents