CGraphic'i test etme - sorular ve öneriler - sayfa 7

 

Her işleve erişimle hata ayıklama, sorunu normal şekilde yerelleştirebilecek ve görevi SD'de ayarlayacaksınız

gigabayt tuvalin yeniden oluşturmaya çalıştığı tuvalin boyutunu hesaplarken bir hata gibi geliyor

veya bazı döngülerde büyük bir dizi oluşturulur

 
o_o :

Her işleve erişimle hata ayıklama, sorunu normal şekilde yerelleştirebilecek ve görevi SD'de ayarlayacaksınız

gigabayt tuvalin yeniden oluşturmaya çalıştığı tuvalin boyutunu hesaplarken bir hata gibi geliyor

veya bazı döngülerde büyük bir dizi oluşturulur


Daha ziyade, şudur: "... bir tür döngüde devasa bir dizi yaratılıyor", çünkü 300 öğelik bir dizide RAM YANMASINI kesinlikle gördüm. Dizüstü bilgisayar "nefes alırken" 5 GB görmeyi başardı.

Sorun, hangi kombinasyonların ölümcül bir sonuca yol açtığını yakalamak için yalnızca yüzüyor - en azından üçüncü taraf bir kamera ile ekranda neler olup bittiğine dair bir video kaydı koyun.

 

benim için çoğalmadı

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

benim için çoğalmadı



Bende de net oynatma yok. Şimdi şunu gördüm:

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

Bu ovmak değil mi?

 
hayır, aksine iyi)
 
o_o :
hayır, aksine iyi)

Önemli değil. Normal derleyicinin kendisi bu tür optimizasyonları yapmalıdır.

Ve açıklamaya göre, sorunun bir bellek sızıntısıyla ilgili olduğuna ve belki de kodda hiç bulunmadığına dair bir şüphe var.

 
o_o :
hayır, oldukça iyi)

Her zamanki i++ ile düzelttim ve daha ayrıntılı bir kod derledim = yine 5 GB :). Biz beklerken kodu daha sonra vereceğim...
 
Vladimir Karputov :


Daha ziyade, şudur: "... bir tür döngüde devasa bir dizi yaratılıyor", çünkü 300 öğelik bir dizide RAM YANMASINI kesinlikle gördüm. Dizüstü bilgisayar "nefes alırken" 5 GB görmeyi başardı.

Sorun, hangi kombinasyonların ölümcül bir sonuca yol açtığını yakalamak için yalnızca yüzüyor - en azından üçüncü taraf bir kamera ile ekranda neler olup bittiğine dair bir video kaydı koyun.

Tünaydın!

Otomatik ölçeklendirmeyi devre dışı bırakmanın nedeni: xAxis.AutoScale(false)

Aynı zamanda değerleri arrX dizisinde çok geniş bir aralıkta saklarsınız:

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

Ve my_graphic.XAxis().DefaultStep() etiketini ayarlarken ekseni bölmek için adım değerini değiştirmezsiniz ve varsayılan olarak 25.0 olduğundan, kitaplığın oluşturmaya çalıştığı etiket sayısı:

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

Bu bir donmaya yol açar, iki seçenek vardır:

  1. Otomatik ölçeklendirmeyi bırak
  2. Varsayılan adımı değiştirmek için my_graphic.XAxis().DefaultStep() yöntemine yeterli bir değer iletin (10 parçaya bölmek için 50878800.0 değerini aldım)
 
Vladimir Karputov :

Her zamanki i++ ile düzelttim ve daha ayrıntılı bir kod derledim = yine 5 GB :). Biz beklerken kodu daha sonra vereceğim...


Burada bir yerlerde:

Köpek ortalığı karıştırdı

sorun. Sadece bu satırlarla oynuyorum.

Dosyalar:
 
Roman Konopelko :

Tünaydın!

Otomatik ölçeklendirmeyi devre dışı bırakmada beklemenin nedeni: xAxis.AutoScale(false)

Aynı zamanda değerleri arrX dizisinde çok geniş bir aralıkta saklarsınız:

Ve my_graphic.XAxis().DefaultStep() etiketini ayarlarken ekseni bölmek için adım değerini değiştirmezsiniz ve varsayılan olarak 25.0 olduğundan, kitaplığın oluşturmaya çalıştığı etiket sayısı:

Bu bir donmaya yol açar, iki seçenek vardır:

  1. Otomatik ölçeklendirmeyi bırak
  2. Varsayılan adımı değiştirmek için my_graphic.XAxis().DefaultStep() yöntemine yeterli bir değer iletin (10 parçaya bölmek için 50878800.0 değerini aldım)


Teşekkür ederim! Çizgileri genel olarak AutoScale ve adım ataması ile kestim (kaldırdım).


Ve hemen bir dilek: İki eksen için HEMEN eğik (açılı) bir yazı tipi yapabilirim (my_graphic.FontSet("Arial",10,0,180);). Ayrı bir eksen için yazı tipini (veya açısını) ayarlamak için böyle bir yöntem yapmak mümkün müdür?

Dosyalar: