ベクトル化を使用してforループを置き換えると、Matlabプログラムの速度が大幅に向上する可能性があります。ベクトル化されたコードが並行して実行されているためですか?
ベクトル化は、NumPyまたはuBLASを使用するプログラムにも役立ちますか?
ベクトル化を使用してforループを置き換えると、Matlabプログラムの速度が大幅に向上する可能性があります。ベクトル化されたコードが並行して実行されているためですか?
ベクトル化は、NumPyまたはuBLASを使用するプログラムにも役立ちますか?
「ベクトル化された」コードは、通常(常にではありませんが)CまたはFORTRANで記述されたコンパイル済みの最適化されたコードを実行するため、Matlabやnumpyなどのインタープリター環境では高速です。並列実行は、これに役割を果たす場合とそうでない場合があります。
numpyでベクトル化を使用すると、通常、この理由でパフォーマンスが向上します。多くの場合、ルーチンは、インタープリターで実行する必要があるネイティブPythonコードよりもはるかに高速に実行されるCまたはFORTRANでコンパイルされます。また、主にCで記述されているnumpyは、Pythonグローバルインタープリターロックを回避できます。これにより、スレッドを使用するPythonコードの応答性が大幅に向上します。
ベクトル化を高速化する理由の1つは、複数の関数呼び出しに関連するオーバーヘッドを削減することだと思います。ベクトルを関数に渡すことは単一の呼び出しに対応しますが、そのベクトルの各要素を関数に個別に渡すことは複数の呼び出しに対応します。