待辦事項 #31576

言語処理系の高速化(2)

啟用日期: 2013-06-16 11:53 最後更新: 2013-06-27 13:22

回報者:
負責人:
類型:
狀態:
關閉
元件:
(無)
里程碑:
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
檔案:

細節

2008年に一度高速化に取り組んである程度の成果を収めましたが、さらに高速化します。

  • BasicBuiltins.BrandはBasicBuitins.Invokeで必ず実行されるのに毎回BrandDataを引いていて遅いので直します
  • LogData.Addが毎回ファイルをOpen/Closeするのは遅いのでやめます
  • return/break/continueの実装に例外を使うと遅いので値で伝搬するようにします

return/break/continueの最適化を行いやすくするために、処理系のリファクタリングを行います。

  • プログラムが複雑になる割に効果が低いので、仮引数とローカル変数のアクセスを配列参照にする最適化をやめます
  • ScannerをNodeの静的プロパティではなくParseの引数で渡します

Ticket History (2/2 Histories)

2013-06-16 11:53 Updated by: panacoran
  • New Ticket "言語処理系の高速化(2)" created
2013-06-27 13:22 Updated by: panacoran
  • 狀態 Update from 開啟 to 關閉
  • Ticket Close date is changed to 2013-06-27 13:22
評語

MA Cross.ptに日経平均採用銘柄20個のリストを実行するベンチマークで

  • 高速化前が35.4秒
  • r460のBasicBuiltins.Brandの最適化で31.2秒
  • r467のLogDataの最適化で24.5秒
  • r472のreturn/break/continueの最適化で19.2秒
  • さらにr473のAppendTextの最適化で16.4秒

と2.16倍の高速化に成功しました。

MA Crossは取引が多くTextBox.AppendTextに引きずられて遅くなっています。TIlibのオブジェクトを多用する計算中心のシステムであれば3倍以上高速化します。

Attachment File List

No attachments

編輯

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登入