こんにちは !
ループ内で多数の分析を (何百万回も) 繰り返しており、結果を保存する必要があります。 それらの結果はテキスト値と数値です。 これまでは結果をデータ テーブルに保存していましたが、テーブルのサイズが増加するとメモリも増加し、分析速度が低下する傾向がありました。
時間とメモリを節約する方法を探しています。
テーブルはすでに非公開になっています (フォーラムの他のトピックで示唆されているように)。それは改善しますが、それだけでは十分ではありません。
テキスト変数をリストに保存し、数値変数をベクトルに保存しようとしました(R では非常に効率的です)。 もしかしたら私のやり方が間違っていたのかもしれませんが、ループの時間を増やすためのようです。
誰か良いアイデアはありますか?
Jmp 14 を使用していますが、JMP 16 にアクセスできます。
具体的にどのプラットフォームを使用していますか? JMP 16 および 17 では、多くのプラットフォームの速度が向上しました。
また、HP Time() 関数を使用して反復をテストすることもできます。 いくつかの良い議論は、こことここ。
追加する@Jed_Campbellさんの返信に応じて、JMP のプロファイリング機能を使用することもできます。デバッガボトルネックがどこにあるのかを特定します。
メモリが不足している場合は、閉じ忘れたプライベート データ テーブルに注意してください。 (確実に閉じていることを確認するには、非公開ではなく非表示にしてみてください。 Invisible は引き続きホーム ウィンドウに表示されます。)
JMP の動作がどんどん遅くなる場合
- ディスク ライトが付いている古いデスクトップをお持ちの場合は、点灯したままになっているかどうかを常に監視してください。 非常に大きな行列を作成している可能性があります。 J(10000) は 2D (1D ではない) 行列を作成します。
- 最後まで連結して文字列または行列を構築している場合、文字列または行列が大きくなるにつれて速度が非常に遅くなります。 行列を適切なサイズに事前に割り当てるか、完了時に concatitems() が後に続く文字列部分のリストを使用します。
JSL デバッガーのプロファイラーを次のように使用してください。 @Mark_Baileyと示唆する。
Wrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, Goレンチ、クロック、ゴー
運が良ければ、上記のものと一致する可能性のある明らかなホットスポットがあるでしょう。
私は Kmean プレートフォームを使用します (プロセスに沿ってレポートを開いたり閉じたりします)。
私は Nick Second () を使用することに慣れていますが、 Hp time() については知りませんでした。 似ているような気がしますが?
見つけたディスカッションについて確認してみます、ありがとう。
Craige に感謝します。それは本当に良いアドバイスです。サイズを事前に割り当てることが役立つとは思いませんでした。
スクリプトにテーブルが表示されるステップがあったため、テーブルを閉じるのを忘れたという問題ではないと確信しています。