2013-03-14 79 views
5

我不能把我的手指放在爲什麼這樣做,但因爲幾天的幫助需要很多時間來顯示。可以內聯(選擇功能,選擇「幫助」),也可以使用命令dochelp。命令doc cmdname需要約10秒鐘來顯示幫助窗口。我所做的,以fwrite爲例,嘗試profile on;doc fwrite;profile viewer和挖掘過了兔子洞我到達一個私人的Java MATLAB方法,它是永遠走:Matlab幫助,doc命令非常慢

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

Elapsed time is 9.993832 seconds. 

任何想法,這可能是造成這個問題?它也發生在安全模式下,除了MATLAB以外沒有其他正在運行的程序。我會嘗試完全重新安裝MATLAB,但是如果我能避免那會很好。

+2

您正在運行哪個Matlab版本? – 2013-03-14 15:46:12

+0

讓我猜... 2012b? – yuk 2013-03-14 17:04:07

+0

是的,2012b(準確的說是8.0.0.783) – rienafairefr 2013-03-15 08:54:24

回答

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: 
[email protected]:\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,進入應用程序數據\本地的\ 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 *是沒有的伎倆,但在這裏的是,現在的文檔快速再次。

4

有幾件事情可能會導致這個問題,但鑑於你提供的信息很難說出究竟發生了什麼。

當R2012b幫助系統初始化時,它執行一些任務,有時會引入明顯的延遲,主要與確定哪些MathWorks產品可用以及如何設置幫助首選項有關。 10秒將是不尋常的,但有可能這是造成延遲的原因。如果您在首次使用幫助系統時看到性能受到影響,但不會再次出現在同一個MATLAB會話中,這可能是原因。 R2013a中的這一行爲得到了改進。

除了初始化任務,有問題的Java調用是針對用於搜索文檔的相同搜索索引的相對直接的搜索。如果您發現在幫助瀏覽器中搜索文檔的速度很慢,這可能意味着性能問題出現在幫助系統的搜索功能中。

在這兩種情況下,您最好的選擇可能是contact MathWorks technical support。我們可能會仔細研究這一點,並可能想出一些解決辦法。