Re: JMP/JSLの高速化についてそれはあなたが何をしているかによって大きく異なります。 いくつかの優れた一般的なヒントは、次のサイトから見つけることができます。スクリプトガイド > 効率的なスクリプト
Re: JMP/JSLの高速化についてありがとう、始めるには良い場所です...
さらに進んで、このアイデアに沿ってできるだけ多くのエントリを含むリストはどうでしょうか。
これを実行したい場合は、おそらくこのアプローチを考えたことがあるでしょう。しかし、速度に関しては、他のアプローチの方がはるかに優れています。
彼の秘密を共有することに興味がある人は誰ですか:)
Re: JMP/JSL の高速化
| トピック | 標準的なアプローチ | より速いアプローチ | リンク |
| データのインポート | | | |
| ファイルのリストを取得する | Python、コマンドプロンプトなどを使用してファイルリストを生成し、新しいJMPテーブルに貼り付けます。 | マイクロフィ → ファイルリストを右クリック → データテーブルにする | |
| 深く複雑なネットワークツリー構造内のファイルを見つける | MFIまたはWindowsのファイルダイアログを使用する | Python/GLOBのラッパーを作成する | |
| データテーブル | | | |
| 値を他の値に置き換える | forループ | DataTableの添え字を使用する | 欠損値を0に置き換える データテーブルをループするか、Recodeを使用するか、それともGet Rows Whereを使用してデータテーブルの値を変更するか |
| データテーブルに列を追加する | テーブル/更新を介してデータテーブルをマージする | まず表/要約で集計し、 テーブル/更新でマージする | テーブル/更新の高速化 |
| 複数のデータファイルを開く | open() を使用する ( forループ内) | MFIを使用する (より高速な CSV リーダー!) | 複数のファイルを開く |
列の集計 制限付き(1) | Where (JMP18) による新しいアプローチ
col Mean(:weight, :sex, where(:age==13)) 覚えやすいですが、非常に遅いですまだ動作しません。 | Ifによる古いアプローチを使用します: col Mean(if(:age=13,:weight,.) :sex) 見た目は複雑ですが、桁違いに高速です*)
| Col-Median-and-others:Whereオプション |
列の集計 制限付き(2) | *) 残念ながら、前の例と比較すると、if 節で文字比較を行う同様の式は非常に遅くなります。 col Mean( if(:sex=="M",:weight,.),:age) | -> if(:sex2==1,...) を使用します: それ以前は: 数値ダミー列を追加:sex2 (例: 表/要約 + ランク経由)
| Col Maximum Formula を where とともに使用する方法
|
| 単語を数える | 例: :col: で xxx を数える N 行(loc(単語(:col),"xxx")) | (長さ(:col)-長さ(置換(:col,"xxx","")))/3 | 文字列内の特定の単語の出現回数をカウントする |
| ランクユニーク | New Column( "rank_unique (sex) by age",Formula(
Col Minimum(
Col Rank( If( Row() == Col Min( Row(),
:age, :sex ), 1 ), :age ),
:age,:sex)) | Ranking Tie および Col Rank 関数に密なランキングを追加する | |
| | | | |
| | | | |
| グラフ | | | |
| | | | |
| | | | |
| レポート | | | |
| | | | |
| | | | |
| 輸出 | | | |
| | | | |
| | | | |
| | | | |
| データベースアクセス | | | |
| | | | |
| | | | |
| | | | |
| ニューラルネットワーク | | | |
| | | | |
| | | | |
| | | | |
| ... | | | |
| | | | |
ヒントとコツ - JMP/JSL のベストプラクティス@Craige_Halesによる素晴らしいブログ記事があります: 円はどうやって描きますか?
これは、あらゆる問題には複数の解決策があり、目標の達成やリソースの投資の成功度はさまざまであることをうまく示しています。
そして多くの場合、すべてのカテゴリで最高ポイントを獲得できる唯一の解決策は存在しません。
- 目標は達成された
- コードの長さ
- スピード(コードを書く)
- 速度(コードを実行する)
- 複雑さ(コードを理解するため)
- 複雑さ(コードを覚えること)
例:
リンク
| トピック |
標準的なアプローチ |
より高速で最適化されたアプローチ |
| 一般的な |
|
|
|
| スクリプトを学ぶ |
試行錯誤 |
JSLスクリプターズクラブミーティングの録画を見る |
|
| |
|
|
|
| データのインポート |
|
|
|
| 複数のデータファイルを開く |
open()を使用する( のためにループ内) |
MFIを使用する (より高速な csv リーダー!) |
複数のファイルを開く |
| ファイルのリストを取得する |
Python、コマンドプロンプトなどを使用してファイルリストを生成し、新しいJMPテーブルに貼り付けます。 |
MFI → ファイルリストを右クリック → データテーブルにする |
|
| 深く複雑なネットワークツリー構造内のファイルを見つける |
MFIまたはWindowsのファイルダイアログを使用する |
Python/GLOBのラッパーを作成する |
|
| |
|
|
|
| データテーブル |
|
|
|
| 列エントリを変更する |
step by step via のために loop |
データテーブルの添え字 |
データテーブルの添え字 |
| |
... |
dt << データ更新の開始/終了; ループの前/後 |
非常に遅いループ動作 |
| データテーブルに列を追加する |
テーブル/更新でデータテーブルを結合する |
first aggregate via Tables/まとめ, then merge via Tables/アップデート |
テーブル/更新の高速化 |
列の集計 制限付き |
with a 文字の比較 Col(if(... gets very (!!!) slow:
col Max( if(:sex=="M", ...) |
a) if(:性別==1,...)を使用します |
Col Maximum Formulaをwhere付きで使う方法 (V19で修正) |
| |
... |
b) replace :sex=="M"<BR />with contains(:sex,"M") |
Col Maximum Formulaをwhere付きで使う方法 |
| 単語数を数える |
例: :col: で xxx を数える N 行(loc(単語(:col),"xxx")) |
(Length(:col)- Length(Substitute(:col, "xxx", "")) )/3
|
文字列内の特定の単語の出現回数を数える |
| ランクユニーク |
New Column( "rank_unique", Formula( Col Minimum( Col Rank( If( Row() == Col Min( Row(), :age, :sex ), 1 ), :age ), :age,:sex)) |
列スコア(:年齢, :性別) (19節) |
Ranking Tie および Col Rank 関数に密なランキングを追加する |
| 再コード |
他のオプションと組み合わせると非常に遅くなる可能性がある |
2番目のステップでオプションを適用する |
再コード - 数値として解析 |
| 値を他の値に置き換える |
forループまたは再コード |
DataTableの添字を使用する |
欠損値を0に置き換える データテーブルをループするか、Recodeを使用するか、それともGet Rows Whereを使用してデータテーブルの値を変更するか |
| 数式に基づいて行を選択する |
dt << select where()は遅すぎる ... 2 つのステップに分割します。 |
myrows= dt << where() の行を取得; dt << 行を選択(myrows) |
項目のリストのいずれかが列の行に含まれているかどうかを確認する数式 |
| スペック計算 |
いくつかの手動JSLコード |
この願いを Kudo でサポートしてください: |
:folded_hands: は仕様(価値)内です |
| |
|
|
|
| グラフ |
|
|
|
| |
|
|
|
| |
|
|
|
| レポート |
|
|
|
| |
|
|
|
| |
|
|
|
| 輸出 |
|
|
|
| |
|
|
|
| |
|
|
|
| |
|
|
|
| データベースアクセス |
|
|
|
| |
|
|
|
| |
|
|
|
| |
|
|
|
| ニューラルネットワーク |
|
|
|
| |
|
|
|
| |
|
|
|
| |
|
|
|
| ... |
|
|
|
| |
|
|
|
[同様のトピックコンテナ]
自動化とスクリプトデータのブレンドとクリーンアップデータの探索と可視化Re: JMP/JSLの高速化について@ian_jmpによって単語を数えるクールなトリックを追加しました。
文字列内の特定の単語の出現数をカウントします。
Re: JMP/JSL の高速化-
Re: JMP/JSL の高速化レポートにおける XPath とサブスクリプトに関する素晴らしい講演:
https://community.jmp.com/t5/Abstracts/I-Can-See-It-How-Do-I-Get-It/ev-p/776041
Re: JMP/JSLの高速化ヨハネ19:
列の集計 制限付き |
with a 文字の比較 Col(if(... gets very (!!!) slow:
<SPAN class="token function">マックスの首輪</SPAN><SPAN class="token punctuation">(</SPAN><SPAN> </SPAN><SPAN class="token function">もし</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">:</SPAN>sex<SPAN class="token operator">==</SPAN><SPAN class="token string">「M」</SPAN><SPAN class="token punctuation">,</SPAN><SPAN> </SPAN><SPAN class="token punctuation">.</SPAN><SPAN class="token punctuation">.</SPAN><SPAN class="token punctuation">.</SPAN><SPAN class="token punctuation">)</SPAN> |
a) 使用 if(:性別==1,...) |
Col Maximum Formulaをwhere付きで使う方法 (V19で修正) |
| ランクユニーク |
<SPAN class="token function">新しいコラム</SPAN><SPAN class="token punctuation">(</SPAN><SPAN> </SPAN><SPAN class="token string">「ランクユニーク」</SPAN><SPAN class="token punctuation">,</SPAN> Formula<SPAN class="token punctuation">(</SPAN><SPAN> </SPAN><SPAN class="token function">最小コル</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">コルランク</SPAN><SPAN class="token punctuation">(</SPAN><SPAN> </SPAN><SPAN class="token function">もし</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">行</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN><SPAN> </SPAN><SPAN class="token operator">==</SPAN><SPAN> </SPAN><SPAN class="token function">ミン大佐</SPAN><SPAN class="token punctuation">(</SPAN><SPAN> </SPAN><SPAN class="token function">行</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>age<SPAN class="token punctuation">,</SPAN><SPAN> </SPAN><SPAN class="token punctuation">:</SPAN>sex<SPAN> </SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN><SPAN> </SPAN><SPAN class="token number">1</SPAN><SPAN> </SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN><SPAN> </SPAN><SPAN class="token punctuation">:</SPAN>age<SPAN> </SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>age<SPAN class="token punctuation">,</SPAN><SPAN class="token punctuation">:</SPAN>sex<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">)</SPAN> |
列スコア(:年齢, :性別) (19節) |
Ranking Tie および Col Rank 関数に密なランキングを追加する |