Cet article est principalement destiné aux programmeurs utilisant Borland C ++ Builder. Le composant TChart est un moyen puissant d'ajouter de la visualisation aux programmes. Malheureusement, le chargement de plusieurs centaines de points dans un graphique utilisant des membres de classe conventionnels est extrêmement lent. Cet article, comme son titre l'indique, permet de contourner ce problème.

En règle générale, les points sont ajoutés en utilisant AddXY (anXValue, anYValue, aLabel, aColor). Cette fonction membre fonctionne bien quand il y a peu de points à ajouter. Cependant, si le nombre de points est important, cette fonction prend beaucoup de temps (voir la figure indiquant le temps nécessaire pour charger jusqu'à 29 470 points de données sur une machine de test).

Pas

  1. 1 L'astuce consiste à pré-allouer la mémoire pour les points de la série de cartes. Il n'y a pas de fonction évidente dans TSeries cela fait ça, mais le FillSampleValues fonction remplit le même but en remplissant la série avec un nombre de points connu.
    • // charge les données dans un flux de mémoire
    • ms-> LoadFromFile ("data");
    • // calcule le nombre de points
    • numpts = ms-> Seek (0, soFromEnd) / sizeof (cd);
    • // pré-allouer de l'espace
    • Series1-> FillSampleValues ​​(numpts);
    • // charge les données dans le graphique
    • ms-> Position = ms-> Seek (0, soFromBeginning);
    • pour (unsigned i = 0; i <numpts; i ++)
    • ms-> Lire (& cd, numbytes);
    • Series1-> XValues-> Value [i] = cd.x;
    • Series1-> YValues-> Value [i] = cd.y;