Teste CGraphic - perguntas e sugestões - página 7

 

depuração de cada função pode localizar o problema de forma adequada e definir uma tarefa no SD

parece haver um erro no cálculo do tamanho da tela que uma tela gigabyte está tentando recriar

ou uma enorme variedade é criada em algum tipo de loop

 
o_o:

depuração de cada função pode localizar o problema de forma adequada e definir uma tarefa no SD

parece haver um erro no cálculo do tamanho da tela que uma tela gigabyte está tentando recriar

Ou cria uma enorme variedade em algum tipo de loop


Mais assim: "...cria um enorme conjunto em algum tipo de loop", como eu definitivamente vi um conjunto de 300 elementos AO VIVO na RAM. Enquanto o laptop estava "respirando" eu consegui ver 5GB.

O problema é apenas flutuar - pelo menos colocar a gravação em vídeo do que acontece na tela - para capturar quais combinações levam a resultados fatais.

 

não tocou para mim

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

Não consigo reproduzi-lo.



Eu também não tenho uma reprodução clara. Acabei de ver isto:

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

Não é esse o problema?

 
Não, é o contrário).
 
o_o:
Não, é bom pelo contrário )

Isso não faz diferença. Um compilador normal deve fazer estas otimizações sozinho.

A julgar pela descrição, temos a suspeita de que o problema é com um vazamento de memória e talvez não esteja no código.

 
o_o:
Não, é o oposto de bom )

Fixou-o ao i++ usual e compilou código mais expandido = 5GB novamente :). Darei o código mais tarde, enquanto pairamos...
 
Vladimir Karputov:


Isto é mais provável: "...cria um enorme conjunto em algum tipo de loop", como eu definitivamente vi um conjunto de 300 elementos CAUSANDO RAM. Enquanto o laptop estava "respirando" eu consegui ver 5GB.

O problema é apenas flutuante - mais vale colocar uma câmera de vídeo de terceiros sobre o que está acontecendo na tela - para capturar quais combinações levam a um resultado fatal.

Boa tarde!

O motivo do desligamento é a desativação da costura automática: xAxis.AutoScale(falso)

Neste caso, você tem uma gama muito grande de valores armazenados na matriz arrX:

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

E você não muda o valor do passo para dividir o eixo ao colocar a assinatura my_graphic.XAxis().DefaultStep(), e como é 25,0 por padrão, o número de assinaturas que a biblioteca tenta gerar é igual:

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

O que leva a um enforcamento, há duas opções:

  1. Deixe a auto-exclusão.
  2. Transmitir um valor adequado ao método my_graphic.XAxis().DefaultStep(), para alterar o passo padrão (obtive o valor 50878800.0 para dividir em 10 partes)
 
Vladimir Karputov:

Fixado ao familiar i++ e compilado código mais expandido = 5GB novamente :). Darei o código mais tarde, enquanto estiver pendurado...


Em algum lugar por aqui:

O cão está aqui em algum lugar

problemas. Eu só estou estragando estas linhas.

Arquivos anexados:
 
Roman Konopelko:

Boa tarde!

A razão para o desligamento é a desativação do auto-stepping: xAxis.AutoScale(falso)

Você tem uma gama muito grande de valores armazenados na matriz arrX:

E você não muda o valor do passo para dividir o eixo ao colocar a assinatura my_graphic.XAxis().DefaultStep(), e como é 25,0 por padrão, o número de assinaturas que a biblioteca tenta gerar é igual:

O que leva a um enforcamento, há duas opções:

  1. Deixar o auto-acoplamento.
  2. Passe um valor adequado para o método my_graphic.XAxis().DefaultStep(), para alterar o passo padrão (obtive um valor de 50878800.0 para uma divisão em 10 partes)


Obrigado! Cortar (remover) as linhas com Autoescala e com o ajuste da etapa em geral.


E imediatamente um desejo: posso fazer uma fonte inclinada (angular) para ambos os eixos ao mesmo tempo (my_graphic.FontSet("Arial",10,0,180);). Não podemos fazer este método de ajuste de fonte (ou ângulo) para um eixo separado?

Arquivos anexados: