Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

optimize #1

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

optimize #1

wants to merge 2 commits into from

Conversation

wasyro
Copy link

@wasyro wasyro commented Aug 27, 2018

Julia言語のコードを最適化してみました.手元の環境ではO3オプション下で2倍以上の高速化に成功しました.
主な変更点:

  1. コード全体を1つの関数内にまとめてトップレベルでの処理を回避
  2. 型変換が重いのでInt32(floor(f / d))の処理をf ÷ dに変更
  3. 粒子速度および音圧の更新式にて,配列の要素ごとの処理にドット演算子を使用
  4. 文字列内で変数の値を"hoge$(fuga)"のように展開するよりも"hoge", fugaのように文字列と変数値の連結を用いたほうが速い場合があるので,一部で修正(これはかなり効果は怪しい)

@nagataniyoshiki
Copy link
Owner

ありがとうございます。とても速くなりますね。
ご指摘いただいた事項に加えて,配列のまま計算していた部分を for 文に書き換えたコードを作成し,FDTD_language_comparison_faster.jl として新規に追加しました。
(optimized ではなく faster としているのは,まだまだ速くなるに違いないからです。自分の現状の能力では困難ですが。)

なお,Pull requests をいただいた FDTD_language_comparison.jl は比較のために FDTD_language_comparison_slowest.jl として残すこととしました。

Copy link
Owner

@nagataniyoshiki nagataniyoshiki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ご指摘いただいた事項に加えて,配列のまま計算していた部分を for 文に書き換えたコードを作成し,FDTD_language_comparison_faster.jl として新規に追加しました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants