2016-12-19 3 views
1

MatLabコンパイラは同じオブジェクトの関数への複数の呼び出しを1回の呼び出しで自動的に変更するのでしょうか?MatLabコンパイラの補助変数

i。 e。

someVector=zeros(length(someOtherVector),1); 

for i=1:length(someOtherVector) 
    ... 
end 

はBY-質問

aSize=length(someOtherVector); 

someVector=zeros(aSize,1); 
for i=1:aSize 
    ... 
end 

を "最適化":どのようにこの最適化の技術が正式に呼ばれているのですか?私は、例えば、JVMがこのようなことをしていることを理解しています。

+0

2番目の質問について:たぶんあなたはジャストインタイム(JIT)編集を指していますか? – mpaskov

+0

コンパイル時にこれを(単純なMatLab関数の場合)実行することができますが、間違っている可能性があります – cladelpino

+0

2番目の質問:この最適化手法の具体的な名前と、JVMがこれを行うかどうか不思議です。 – cladelpino

答えて

2

MATLAB JITコンパイラは、多くの最適化を行いますが、あなたが提案している最適化をしないと確信しています。

lengthという名前の独自の関数を作成して、入力が何であれランダムな整数を返し、組み込みのlengthをシャドーするようにパスに配置したとします。その後、2番目のバージョンは、最初のバージョンの最適化バージョンではないだけでなく、実際には異なる効果があります。実際

、あなた本当にlengthと呼ばれるそれは、新しいファイルを書きましたように、あなたがlengthを実装することができ、周り混乱したかったし、それは完全に異なる効果次回を持っているなるように、パスに先駆け自体のそれを置く場合まわり。

MATLABは非常に柔軟な言語ですが、多くのメリットがありますが、MATLABコードでこれらのJIT最適化が必要とする静的解析の種類を実行することは難しくなります。 Javaは静的解析がはるかに容易であるため、JVMはより多くの最適化を実行できます。