Test CGraphic - domande e suggerimenti - pagina 7

 

il debug di ogni funzione può individuare il problema in modo corretto e impostare un compito nella SD

sembra esserci un errore nel calcolo della dimensione della tela un gigabyte di tela sta cercando di ricreare

o un enorme array viene creato in qualche tipo di ciclo

 
o_o:

il debug di ogni funzione può individuare il problema in modo corretto e impostare un compito nella SD

sembra esserci un errore nel calcolo della dimensione della tela un gigabyte di tela sta cercando di ricreare

Oppure crea un enorme array in una specie di ciclo


Altri come questo: "...crea un enorme array in qualche tipo di ciclo", poiché ho sicuramente visto un array di 300 elementi VIVERE sulla RAM. Mentre il portatile "respirava" sono riuscito a vedere 5GB.

Il problema è solo galleggiante - almeno mettere la registrazione video di ciò che accade sullo schermo - per catturare quali combinazioni portano a risultati fatali.

 

non ha suonato per me

...
      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:

Non riesco a riprodurlo.



Nemmeno io ho una riproduzione chiara. Ho appena visto questo:

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

Non è questo il problema?

 
No, è il contrario).
 
o_o:
No, è buono al contrario )

Non fa differenza. Un compilatore normale dovrebbe fare da solo queste ottimizzazioni.

A giudicare dalla descrizione, abbiamo il sospetto che il problema sia con una perdita di memoria e forse non nel codice.

 
o_o:
No, è l'opposto di bene )

Corretto al solito i++ e compilato più codice espanso = 5GB di nuovo :). Darò il codice più tardi, mentre siamo in bilico...
 
Vladimir Karputov:


Questo è più probabile: "...crea un enorme array in una sorta di loop", poiché ho sicuramente visto un array di 300 elementi CAUSARE la RAM. Mentre il portatile "respirava" sono riuscito a vedere 5GB.

Il problema è solo fluttuante - si potrebbe anche mettere sullo schermo un video di una telecamera di terzi di ciò che sta accadendo - per cogliere quali combinazioni portano a un risultato fatale.

Buon pomeriggio!

La ragione del blocco è la disabilitazione della cucitura automatica: xAxis.AutoScale(false)

In questo caso avete una gamma molto grande di valori memorizzati nell'array arrX:

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

E non si cambia il valore del passo per dividere l'asse quando si mette la firma my_graphic.XAxis().DefaultStep(), e siccome è 25.0 di default, il numero di firme che la libreria cerca di generare è uguale:

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

Il che porta a un'impiccagione, ci sono due opzioni:

  1. Per lasciare l'autostrobbing.
  2. Passare un valore adeguato al metodo my_graphic.XAxis().DefaultStep(), per cambiare il passo predefinito (ho ottenuto un valore di 50878800.0 per una divisione in 10 parti)
 
Vladimir Karputov:

Fisso a i++ familiare e compilato più codice espanso = 5GB di nuovo :). Darò il codice più tardi, mentre appeso...


Da qualche parte qui dentro:

Il cane è qui da qualche parte

problemi. Sto solo rovinando queste linee.

 
Roman Konopelko:

Buon pomeriggio!

La ragione del blocco è la disabilitazione dell'auto-stepping: xAxis.AutoScale(false)

Avete una gamma molto ampia di valori memorizzati nell'array arrX:

E non si cambia il valore del passo per dividere l'asse quando si mette la firma my_graphic.XAxis().DefaultStep(), e siccome è 25.0 di default, il numero di firme che la libreria cerca di generare è uguale:

Il che porta a un'impiccagione, ci sono due opzioni:

  1. Per lasciare l'attacco automatico.
  2. Passare un valore adeguato al metodo my_graphic.XAxis().DefaultStep(), per cambiare il passo predefinito (ho ottenuto un valore di 50878800.0 per una divisione in 10 parti)


Grazie! Tagliate (rimosse) le linee con AutoScale e con l'impostazione del passo in generale.


E subito un desiderio: posso fare un font inclinato (angolato) per entrambi gli assi contemporaneamente (my_graphic.FontSet("Arial",10,0,180);). Non possiamo fare questo metodo di impostazione del carattere (o dell'angolo) per un asse separato?