CGraphicのテスト - 質問と提案 - ページ 7

 

各機能をデバッグすることで、問題を適切に特定し、SDのタスクを設定することができます。

ギガバイトのキャンバスを再現しようとすると、キャンバスサイズの計算でエラーが発生するようです。

または、何らかのループで巨大な配列が作成されます。

 
o_o:

各機能をデバッグすることで、問題を適切に特定し、SDのタスクを設定することができます。

ギガバイトのキャンバスを再現しようとすると、キャンバスサイズの計算でエラーが発生するようです。

あるいは、ある種のループで巨大な配列を作成します。


もっと見る"・・・何らかのループで巨大な配列を作成する "とありますが、確かに300要素の配列がRAM上でLIVEしているのを見たことがあります。ノートパソコンが「呼吸」している間に、なんとか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を引き起こすのを見たことがあるので、「...ある種のループで巨大な配列を作成する」。ノートパソコンが「呼吸」している間に、なんとか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

それがハングアップにつながるのですが、選択肢は2つあります。

  1. オートストローブを残すこと。
  2. my_graphic.XAxis().DefaultStep()メソッドに適切な値を渡して、デフォルトのステップを変更します(10分割で50878800.0という値が出ました)。
 
Vladimir Karputov:

使い慣れたi++に修正し、より拡張されたコード=5GBを再びコンパイルしました :).コードは後で、ぶら下がりながら...。


この中のどこか。

犬はこの辺にいる

のトラブルが発生します。こういうセリフはネタバレでしかないんですけどね。

ファイル:
 
Roman Konopelko:

こんにちは。

ハングアップの原因は、オートステップを無効にしていることです: xAxis.AutoScale(false)

arrX配列に非常に大きな範囲の値が格納されていますね。

また、my_graphic.XAxis().DefaultStep()という署名を入れる際に軸を分割するステップの値を変えておらず、デフォルトでは25.0なのでライブラリが生成しようとする署名の数は等しくなっています。

それがハングアップにつながるのですが、選択肢は2つあります。

  1. オートアタッチメントを残すには
  2. my_graphic.XAxis().DefaultStep() メソッドに適当な値を渡して、デフォルトのピッチを変更します(10分割で 50878800.0 という値が得られました)。


ありがとうございます。オートスケールとステップ設定全般で線をカット(削除)する。


そして早速、願望ですが、両軸の斜め(角度)フォントを一度に作ることができます(my_graphic.FontSet("Arial",10,0,180);)。このフォント(または角度)設定方法を別軸にできないか?

ファイル:
理由: