Test de CGraphic - questions et suggestions - page 7

 

Le débogage de chaque fonction permet de localiser correctement le problème et de définir une tâche dans le SD.

il semble y avoir une erreur dans le calcul de la taille du canevas un canevas de gigaoctets essaie de recréer

ou un énorme tableau est créé dans une sorte de boucle

 
o_o:

Le débogage de chaque fonction permet de localiser correctement le problème et de définir une tâche dans le SD.

il semble y avoir une erreur dans le calcul de la taille du canevas un canevas de gigaoctets essaie de recréer

Ou il crée un énorme tableau dans une sorte de boucle.


Plus comme cela : "...crée un énorme tableau dans une sorte de boucle", car j'ai bien vu un tableau de 300 éléments VIVRE sur la RAM. Pendant que l'ordinateur portable "respirait", j'ai réussi à voir 5 Go.

Le problème n'est que flottant - au moins mettre l'enregistrement vidéo de ce qui se passe sur l'écran - pour attraper les combinaisons qui conduisent à des résultats fatals.

 

il n'a pas joué pour moi

...
      CCurve *curve_b=my_graphic.CurveAdd(arrX,arrY,CURVE_LINES,"Close");
      CAxis *xAxis=my_graphic.XAxis();           // получаем ось X
      //---попеременно комбинирую (комментировать, раскоментировать) строки 87
      //--- и 88 можно словить момент поглощения памяти и зависания компьютера
      //xAxis.AutoScale(false); 
      //xAxis.Type(AXIS_TYPE_DATETIME); 
->    my_graphic.CurvePlotAll();
      my_graphic.Update();
...


 
o_o:

Je ne peux pas le reproduire.



Je n'ai pas non plus de lecture claire. Je viens de voir ça :

      for(int i=0; i<size;++i)

N'est-ce pas là le problème ?

 
Non, c'est l'inverse.)
 
o_o:
Non, c'est bien au contraire.)

Cela ne fait aucune différence. Un compilateur normal devrait faire ces optimisations lui-même.

D'après la description, nous soupçonnons que le problème provient d'une fuite de mémoire et peut-être pas du tout du code.

 
o_o:
Non, c'est le contraire de bien.)

Je l'ai corrigé avec le i++ habituel et j'ai compilé un code plus étendu = 5GB à nouveau :). Je donnerai le code plus tard, pendant que nous planons...
 
Vladimir Karputov:


C'est plus probable : "...crée un énorme tableau dans une sorte de boucle", car j'ai déjà vu un tableau de 300 éléments CAUSER de la RAM. Pendant que l'ordinateur portable "respirait", j'ai réussi à voir 5 Go.

Le problème n'est que flottant - on pourrait tout aussi bien mettre une caméra tierce qui filme ce qui se passe à l'écran - pour saisir quelles combinaisons conduisent à un résultat fatal.

Bonjour !

La raison de ce blocage est la désactivation de l'auto-collage : xAxis.AutoScale(false)

Dans ce cas, vous avez un très large éventail de valeurs stockées dans le tableau arrX :

double MAX = arrX[ArrayMaximum(arrX)]; // 1497438000.0
double MIN = arrX[ArrayMinimum(arrX)]; // 988653600.0

Et vous ne changez pas la valeur du pas pour diviser l'axe en mettant la signature my_graphic.XAxis().DefaultStep(), et comme elle est de 25.0 par défaut, le nombre de signatures que la bibliothèque essaie de générer est égal :

m_xsize=(int)MathRound((max-min)/step)+1; // 20351377

Ce qui nous amène à un accrochage, il y a deux options :

  1. Pour quitter l'autostrobbing.
  2. Passez une valeur adéquate à la méthode my_graphic.XAxis().DefaultStep(), pour changer le pas par défaut (j'ai obtenu une valeur de 50878800.0 pour une division en 10 parties)
 
Vladimir Karputov:

Fixé à i++ familier et compilé un code plus étendu = 5GB à nouveau :). Je donnerai le code plus tard, pendant que je serai suspendu...


Quelque part par là :

Le chien est ici quelque part.

trouble. Je ne fais que gâcher ces lignes.

Dossiers :
 
Roman Konopelko:

Bonjour !

La raison de ce blocage est la désactivation de l'auto-stepping : xAxis.AutoScale(false)

Vous avez une très large gamme de valeurs stockées dans le tableau arrX :

Et on ne change pas la valeur du pas pour diviser l'axe en mettant la signature my_graphic.XAxis().DefaultStep(), et comme elle est de 25.0 par défaut, le nombre de signatures que la bibliothèque essaie de générer est égal :

Ce qui nous mène à une pendaison, il y a deux options :

  1. Pour quitter l'attachement automatique.
  2. Passez une valeur adéquate à la méthode my_graphic.XAxis().DefaultStep(), pour changer le pas par défaut (j'ai obtenu une valeur de 50878800.0 pour une division en 10 parties)


Merci ! Coupez (supprimez) les lignes avec AutoScale et avec le réglage du pas en général.


Et tout de suite un souhait : je peux faire une police inclinée (angulaire) pour les deux axes à la fois (my_graphic.FontSet("Arial",10,0,180) ;). Ne pouvons-nous pas faire de cette méthode de réglage de la police (ou de l'angle) un axe distinct ?

Dossiers :
Raison: