CGraphic 테스트 - 질문 및 제안 - 페이지 7

 

각 기능에 액세스하여 디버깅하면 문제를 정상적으로 지역화할 수 있으며 SD에서 작업을 설정할 수 있습니다.

기가바이트 캔버스가 다시 만들려고 하는 캔버스의 크기를 계산하는 데 오류가 있는 것 같습니다.

또는 일부 루프에서 거대한 배열이 생성됩니다.

 
o_o :

각 기능에 액세스하여 디버깅하면 문제를 정상적으로 지역화할 수 있으며 SD에서 작업을 설정할 수 있습니다.

기가바이트 캔버스가 다시 만들려고 하는 캔버스의 크기를 계산하는 데 오류가 있는 것 같습니다.

또는 일부 루프에서 거대한 배열이 생성됩니다.


300개 요소의 배열에서 RAM이 타는 것을 확실히 보았기 때문에 "... 일종의 루프에서 거대한 배열이 생성되고 있습니다."입니다. 랩톱이 "숨쉬는" 동안 5GB를 볼 수 있었습니다.

문제는 어떤 조합이 치명적인 결과를 초래하는지 파악하기 위해 떠다니는 것뿐입니다. 최소한 타사 카메라로 화면에서 일어나는 일을 비디오로 녹화한 것입니다.

 

나를 위해 재생산하지 않았다

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

나를 위해 재생산하지 않았다



저도 클리어 재생이 안되네요. 이제 나는 이것을 보았다:

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

문지르지 않습니까?

 
아니, 꽤 좋다)
 
o_o :
아니 오히려 좋다)

그것은 중요하지 않습니다. 일반 컴파일러 자체가 이러한 최적화를 수행해야 합니다.

그리고 설명에 따르면 문제가 메모리 누수에 있다는 의심이 있으며 코드에는 전혀 없을 수도 있습니다.

 
o_o :
아니, 꽤 좋다)

나는 일반적인 i++로 그것을 수정하고 더 자세한 코드를 컴파일했습니다 = 다시 5GB :). 코드는 나중에 알려 드리겠습니다.
 
Vladimir Karputov :


300개 요소의 배열에서 RAM BURNING을 분명히 보았기 때문에 "... 일종의 루프에서 거대한 배열이 생성되고 있습니다."입니다. 랩톱이 "숨쉬는" 동안 5GB를 볼 수 있었습니다.

문제는 어떤 조합이 치명적인 결과를 초래하는지 파악하기 위해 떠다니는 것뿐입니다. 최소한 타사 카메라로 화면에서 일어나는 일을 비디오로 녹화한 것입니다.

안녕하세요!

자동 크기 조정 비활성화의 중단 이유: xAxis.AutoScale(false)

동시에 arrX 배열의 매우 큰 범위에 값을 저장합니다.

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

그리고 my_graphic.XAxis().DefaultStep() 레이블을 설정할 때 축 분할을 위한 단계 값을 변경하지 않으며 기본적으로 25.0이므로 라이브러리에서 생성하려고 하는 레이블 수는 다음과 같습니다.

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

정지로 이어지는 두 가지 옵션이 있습니다.

  1. 자동 크기 조정 나가기
  2. my_graphic.XAxis().DefaultStep() 메서드에 적절한 값을 전달하여 기본 단계를 변경합니다.
 
Vladimir Karputov :

나는 일반적인 i++로 그것을 수정하고 더 자세한 코드를 컴파일했습니다 = 다시 5GB :). 코드는 나중에 알려 드리겠습니다.


여기 어딘가:

개가 여기를 뒤졌다

문제. 나는 단지 이 라인들을 가지고 놀고 있을 뿐입니다.

파일:
 
Roman Konopelko :

안녕하세요!

자동 크기 조정 비활성화의 중단 이유: xAxis.AutoScale(false)

동시에 arrX 배열의 매우 큰 범위에 값을 저장합니다.

그리고 my_graphic.XAxis().DefaultStep() 레이블을 설정할 때 축 분할을 위한 단계 값을 변경하지 않으며 기본적으로 25.0이므로 라이브러리에서 생성하려고 하는 레이블 수는 다음과 같습니다.

정지로 이어지는 두 가지 옵션이 있습니다.

  1. 자동 크기 조정 나가기
  2. my_graphic.XAxis().DefaultStep() 메서드에 적절한 값을 전달하여 기본 단계를 변경합니다.


고맙습니다! AutoScale과 단계 할당을 사용하여 일반적으로 선을 잘라(제거)했습니다.


그리고 즉시 소원: 두 축(my_graphic.FontSet("Arial",10,0,180);)에 대해 즉시 비스듬한 글꼴을 만들 수 있습니다(my_graphic.FontSet("Arial",10,0,180);). 별도의 축에 대해 글꼴(또는 각도)을 설정하는 이러한 방법을 만들 수 있습니까?

파일: