Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
遅延評価と健康
Search
Susisu
October 16, 2016
Programming
0
630
遅延評価と健康
遅延評価でパーサコンビネータを高速化した話
http://connpass.com/event/39553/
Susisu
October 16, 2016
Tweet
Share
More Decks by Susisu
See All by Susisu
Go で言うところのアレは TypeScript で言うとコレ / Kyoto.なんか #7
susisu
7
2.4k
君だけのオリジナル async / await を作ろう / TSKaigi 2025
susisu
18
15k
null or undefined
susisu
25
7.6k
Mackerel のフロントエンドフレームワーク移行 序章 / Hatena Engineer Seminar #13
susisu
0
2.2k
スクリーンショット撮影のために Puppeteer を操る / Kyoto.js 16
susisu
0
910
BuckleScript 使ってみた
susisu
0
360
Atom パッケージ開発のすゝめ
susisu
1
2.2k
5分でわかる Curry–Howard 同型対応
susisu
0
1.1k
ジェネレータを有効活用し隊 / Kyoto.js 11 LT
susisu
2
2.2k
Other Decks in Programming
See All in Programming
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
190
スマホから Youtube Shortsを見られないようにする
lemolatoon
24
27k
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
8
1.6k
Conquering Massive Traffic Spikes in Ruby Applications with Pitchfork
riseshia
0
160
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
1.2k
Serena MCPのすすめ
wadakatu
4
960
AI Coding Meetup #3 - 導入セッション / ai-coding-meetup-3
izumin5210
0
2.7k
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
2
150
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
350
All About Angular's New Signal Forms
manfredsteyer
PRO
0
110
CSC509 Lecture 05
javiergs
PRO
0
300
大規模アプリのDIフレームワーク刷新戦略 ~過去最大規模の並行開発を止めずにアプリ全体に導入するまで~
mot_techtalk
0
430
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.8k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
4 Signs Your Business is Dying
shpigford
185
22k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.9k
Into the Great Unknown - MozCon
thekraken
40
2.1k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
189
55k
The Cost Of JavaScript in 2023
addyosmani
53
9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Balancing Empowerment & Direction
lara
4
680
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Transcript
Ԇ ධ Ձ ͱ ݈ ߁ 2 0 1
6 - 1 0 - 1 6 O U C C LT ձ # 5 @susisu2413
Ԇ ධ Ձ Ͱ ύ ʔ α ί ϯ
Ϗω ʔ λ Λ ޮ Խ ͠ ͨ Λ ͠ · ͢
ύ ʔ α ί ϯ Ϗω ʔ λ ʁ
ߏ จ ղ ੳ ͢ Δ ͭ h t
t p s : / / e n . w i k i p e d i a . o rg / w i k i / P a r s e r _ c o m b i n a t o r
ೖ ྗ Τ ϥ ʔ Γ ύʔα ύʔαΛؔͰදݱ
ʢ࣮༻্ΦϒδΣΫτͰϥοϓʣ
ೖ ྗ Τ ϥ ʔ Γ ύʔα ύ
ʔ α ύ ʔ α ύʔα ίϯϏωʔλ ύʔαίϯϏωʔλͰΑΓෳࡶͳύʔαΛߏங
༗ ໊ ͳ ͷ P a r s e c
( H a s k e l l ) h t t p s : / / g i t h u b . c o m / a s l a t t e r / p a r s e c P a r s i m m o n ( J a v a S c r i p t ) h t t p s : / / g i t h u b . c o m / j n e e n / p a r s i m m o n
࡞ ͬͯ Έ ͨ ʢ 2 લ ʣ
J a v a S c r i p t
Ͱ P a r s e c ؙ ύ Ϋ Ϧ h t t p s : / / g i t h u b . c o m / s u s i s u / L o q u a t
ͱ ͯ ศ ར ࣗ ࡞ ε Ϋ Ϧ
ϓ τ ݴ ޠ G r a s s ί ϯύ Π ϥ ︙
ੑ ೳ ʁ
1000ߦͷ JSON × 1000ճ (Node.js v6.7.0) ൺ ֱ
Parsimmon: 4.8 sec PEG.js: 8.47 sec Loquat: 72724ms ࣗ࡞: ? sec
1000ߦͷ JSON × 1000ճ ൺ ֱ Parsimmon: 4.8
sec PEG.js: 8.47 sec ࣗ࡞: 72.7 sec
None
ͳ ͥ ͍ ʁ
V 8 ͷ ϓ ϩ ϑ Ν Π ϥ Ͱ
ௐ Δ node --prof parse.js node --prof-process isolate-0x*-v8.log https://github.com/v8/v8/wiki/Using%20V8’s %20internal%20profiler
͍ ͷ ͨ ͪ ύ ʔ α ͷ
݁ ߹ จ ࣈ ͷ ύ ʔε Τ ϥ ʔ ॲ ཧ
ࠓ ͷ ϝ Π ϯ Τ ϥ ʔ ॲ
ཧ
Τ ϥ ʔ ॲ ཧ ߏ จ ղ ੳ ࣦ
ഊ ࣌ ʹ ώ ϯ τ Λ ग़ ͢ ͨ Ί ϝ ο η ʔ δ ྻ ͷ ݁ ߹ ͳ Ͳ
ࣦ ഊ ͠ ͨ ͱ ͖ ͷ Έ ඞ ཁ
ࣦ ഊ ͢ Δ · Ͱ ܭ ࢉ ͠ ͳ
͍
Ԇ ධ Ձ
ܭ ࢉ Λ Ԇ ͞ ͤ Δ ʹ
ʁ let x = 1 + 2;
Ϋ ϩ ʔ δ ϟ ʹ ͢ Ε ྑ
͍ let x = () => 1 + 2;
ຖ ճ ؔ ݺ ͼ ग़ ͠ Ω ϟ
ο γ ϡ ͞ Ε ͳ ͍ ͍ ͮ Β ͍
Φ ϒ δΣ Ϋ τ Ͱ ϥ ο ϓ
ΠϯλʔϑΣʔε͕ڞ௨ͨ̎ͭ͠ͷΫϥεΛ࡞ ParseError LazyParseError ௨ৗ൛ Ԇ൛
σʔλΛՃ͢Δͱ͖Ԇ൛Ͱ ܭࢉΛԆͤ͞Δ ParseError LazyParseError Ճʢ݁߹ͳͲʣ Ճ
௨ৗ൛Ͱ getter ͦͷ··Λฦ͢ ParseError LazyParseError
Ԇ൛Ͱ getter ධՁ͔ͯ͠ΒΛฦ͢ ParseError LazyParseError ධՁ ݁ՌΩϟογϡ
݁ Ռ
1000ߦͷ JSON × 1000ճ ൺ ֱ ݩ: 72.7
sec վྑ൛: 28.4 sec ԆධՁ͋Γ: ? sec
1000ߦͷ JSON × 1000ճ ൺ ֱ ԆධՁ͋Γ: 11.2
sec ݩ: 72.7 sec վྑ൛: 28.4 sec
1000ߦͷ JSON × 1000ճ ൺ ֱ Parsimmon: 4.8
sec PEG.js: 8.47 sec վྑ൛ + ԆධՁ: 11.2 sec
· ͱ Ί
Ԇ ධ Ձ ͍ ͍ ͧ ܭ ࢉ
ͷ ޮ Խ ଞ ʹ ॥ ఆ ٛ ͳ Ͳ
ܽ ͋ Δ ͷ Ͱ ҙ ࣌
ؒ ɾ ۭ ؒ త ί ε τ ࢥ Θ ͵ ε λ ο Ϋ ͷ ফ අ
ύ ʔ α ί ϯ Ϗω ʔ λ v 2
͝ ظ Լ ͞ ͍ h t t p s : / / g i t h u b . c o m / s u s i s u / l o q u a t - c o re