コードの最適化
Moduleは実行されるたびに一意の変数を生成する.Blockと大域的に一意の変数を使った関数を書くことで,変数生成ステップが省略されるため,反復の実行がスピードアップする.
大域的に一意の変数を持つBlockを使うためModuleを削除する.
In[1]:= | ![]() X |
非アクティブな関数を生成する.
In[2]:= | ![]() X |
Out[2]= | ![]() |
変換を適用する.
In[3]:= | ![]() X |
Out[3]= | ![]() |
このコードと変換されたコードをアクティブにし,fModuleとfBlockの定義を作成する.
In[4]:= | ![]() X |
ランダムなテスト値の値を比較する.
In[5]:= | ![]() X |
Out[5]= | ![]() |
テスト値の大きい集合での所要時間を比較すると,2.5倍スピードアップしていることが分かる.
In[6]:= | ![]() X |
Out[6]= | ![]() |