チケット #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の引数で渡します

チケットの履歴 (2 件中 2 件表示)

2013-06-16 11:53 更新者: panacoran
  • 新しいチケット "言語処理系の高速化(2)" が作成されました
2013-06-27 13:22 更新者: panacoran
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻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倍以上高速化します。

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする