5

なぜこれを行っているのか、私にはわかりませんが、数日後、ヘルプが表示されるまでに多くの時間がかかります. インライン (関数の選択、「help for」の選択)、またはコマンドdocまたはhelp. このコマンドdoc cmdnameは、ヘルプ ウィンドウを表示するのに約 10 秒かかります。私は、fwrite例として、profile on;doc fwrite;profile viewer私が到着したウサギの穴を掘り下げてみました。

tic;
com.mathworks.mlwidgets.help.HelpUtils.getDocCommandArg('matlab\fwrite', true);
toc 

Elapsed time is 9.993832 seconds.

その問題の原因は何ですか?また、MATLAB 以外のプログラムが実行されていないセーフ モードでも発生します。MATLAB を完全に再インストールしてみますが、それを避けることができれば素晴らしいことです。

4

2 に答える 2

4

この問題の原因となる可能性のあることがいくつかありますが、提供された情報を考えると、何が起こっているのかを正確に言うことは困難です。

R2012bヘルプシステムが初期化されると、いくつかのタスクが実行され、顕著な遅延が発生することがあります。これは主に、使用可能なMathWorks製品の決定と、ヘルプ設定の設定方法に関連しています。10秒は異常ですが、これが遅延の原因である可能性があります。ヘルプシステムを初めて使用したときにパフォーマンスが低下したが、同じMATLABセッションでは再び発生しなかった場合は、これが原因である可能性があります。この動作はR2013aで改善されています。

初期化タスクを除いて、問題のJava呼び出しは、ドキュメントの検索に使用されるのと同じ検索インデックスに対する比較的簡単な検索です。ヘルプブラウザでのドキュメントの検索が遅い場合、これはパフォーマンスの問題がヘルプシステムの検索機能のどこかにあることを示唆しています。

いずれの場合も、 MathWorksテクニカルサポートに連絡するのが最善の策です。これを詳しく調べて、何らかの修正を考え出すことができる可能性があります。

于 2013-03-15T18:24:00.167 に答える
1

この問題は、mathworks サポートからの入力により解決されました。

>> tic;doc fwrite;toc
Elapsed time is 20.301202 seconds.

>> tic;reader = org.apache.lucene.index.IndexReader.open(fullfile(docroot,'helpsearch'));
searcher = org.apache.lucene.search.IndexSearcher(reader);
term = org.apache.lucene.index.Term('relpath','ref/plot.html');
query = org.apache.lucene.search.TermQuery(term);
hits = searcher.search(query);
fprintf('Found %d results\n', hits.length); searcher.close; reader.close; toc;
Java exception occurred:
java.io.IOException: Lock obtain timed out:
Lock@C:\Users\b\AppData\Local\Temp\lucene-ca3070c312bc20732565936b371a8bd3-     commit.lock
at
org.apache.lucene.store.Lock.obtain(Lock.java:56)
at
org.apache.lucene.store.Lock$With.run(Lock.java:98)
at
org.apache.lucene.index.IndexReader.open(IndexReader.java:141)
at
org.apache.lucene.index.IndexReader.open(IndexReader.java:125)

その後、一時ファイルがロックされているのが問題だと思い、Matlab を閉じて AppData\Local\Temp\ に移動し、その中のすべての一時ファイルを消去しました。

>> tic;
reader = org.apache.lucene.index.IndexReader.open(fullfile(docroot,'helpsearch'));
searcher = org.apache.lucene.search.IndexSearcher(reader);
term = org.apache.lucene.index.Term('relpath','ref/plot.html');
query = org.apache.lucene.search.TermQuery(term);
hits = searcher.search(query);
fprintf('Found %d results\n', hits.length); searcher.close; reader.close; toc;
Found 5 results
Elapsed time is 0.106868 seconds.

>> tic;doc fwrite;toc
Elapsed time is 0.153808 seconds.

トリックを行ったのは、一時ファイルのクリーニングまたは内部 Java クラス org.apache.lucene* への参照のいずれかですが、これで、doc が再び高速になりました。

于 2013-04-02T09:42:13.440 に答える