Ticket #31576

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

Open Date: 2013-06-16 11:53 Last Update: 2013-06-27 13:22

Reporter:
Owner:
Status:
Closed
Component:
(None)
MileStone:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

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
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2013-06-27 13:22
Comment

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

Edit

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