Figure に凡例を表示する必要がある Matlab コードがある場合、実行時間が大幅に増加することに気付きました。
次に例を示します。
clear all
close all
clc
% legend test
x = [0:1:100];
y = x.^(3.123);
figure('Name', 'X-Y and X-X plot')
plot(x,y)
hold all
plot(x,x)
legend('1', '232')
実行時間は 1.1 秒です。行のない同じコードlegend('1', '232')
の実行時間は 0.4 秒です。単純な凡例が実行時間をこれほど長くするのは非常に奇妙だと思います。
プロファイラーを使用すると、主に時間の増加に関与する関数が呼び出されることがわかりましたgraphics/private/texmex
。自己時間は 0.12 秒で、4 回呼び出されます。凡例を作成しない場合、この関数は呼び出されません。
図の凡例を生成しながら、コードを高速化する方法はありますか?
Mac OS 10.8.3 で 64 ビットの Matlab 2012b を実行しています。
関数を使用しset(0, DefaultTextInterpreter, 'none')
て例のコードを実行すると、によって呼び出され、などによって呼び出されます...:texmex
tex>localCallTeXParser
scribe.legend.methods>strsize
graphics/private/texmex
tex>localCallTeXParser
scribe.legend.methods>strsize
scribe.legend.methods>getsizeinfo
scribe.legend.methods>getsize
scribe.legend.methods
scribe.legend.legend