タグ

loquat2とpegに関するmanabouのブックマーク (1)

  • パーサコンビネータを高速化した - Object.create(null)

    例のアレです. 式年遷宮したときの話はこちら. github.com 最初は軽い気持ちで細々とした最適化をしていたんです. switch を if に変えるとかいう小手先のアレで 10 % も高速化してウケてる— ボノボ (@susisu2413) 2017年3月13日 インライン化も同時にしてたから 10 % は言い過ぎか、でも高速化はしてる— ボノボ (@susisu2413) 2017年3月13日 ちなみにどう最適化するかというと V8 のプロファイラを使って適当に遅そうなところに目星をつけて色々試します. そんなこんなで Parsimmon*1 より妙に遅い原因を探していたら, ap, left, right (Parsec*2 でいうところの <*>, <*, *>) の実装の効率が悪く, これが主な原因であることがわかりました. アッアッ 30 % 高速化しました— ボノボ (

    パーサコンビネータを高速化した - Object.create(null)
  • 1