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
590
遅延評価と健康
遅延評価でパーサコンビネータを高速化した話
http://connpass.com/event/39553/
Susisu
October 16, 2016
Tweet
Share
More Decks by Susisu
See All by Susisu
null or undefined
susisu
25
7.2k
Mackerel のフロントエンドフレームワーク移行 序章 / Hatena Engineer Seminar #13
susisu
0
2k
スクリーンショット撮影のために Puppeteer を操る / Kyoto.js 16
susisu
0
820
BuckleScript 使ってみた
susisu
0
300
Atom パッケージ開発のすゝめ
susisu
1
2.1k
5分でわかる Curry–Howard 同型対応
susisu
0
950
ジェネレータを有効活用し隊 / Kyoto.js 11 LT
susisu
2
2.1k
楽しく学ぶ難解プログラミング言語
susisu
0
770
多分これが一番早いと思います
susisu
0
410
Other Decks in Programming
See All in Programming
技術的負債と向き合うカイゼン活動を1年続けて分かった "持続可能" なプロダクト開発
yuichiro_serita
0
300
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
950
BEエンジニアがFEの業務をできるようになるまでにやったこと
yoshida_ryushin
0
200
Azure AI Foundryのご紹介
qt_luigi
1
210
サーバーゆる勉強会 DBMS の仕組み編
kj455
1
300
AWS re:Invent 2024個人的まとめ
satoshi256kbyte
0
100
どうして手を動かすよりもチーム内のコードレビューを優先するべきなのか
okashoi
3
870
PHPカンファレンス 2024|共創を加速するための若手の技術挑戦
weddingpark
0
140
カンファレンス動画鑑賞会のススメ / Osaka.swift #1
hironytic
0
170
chibiccをCILに移植した結果 (NGK2025S版)
kekyo
PRO
0
130
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.4k
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
290
Featured
See All Featured
Navigating Team Friction
lara
183
15k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
A better future with KSS
kneath
238
17k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.5k
4 Signs Your Business is Dying
shpigford
182
22k
Into the Great Unknown - MozCon
thekraken
34
1.6k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
How to train your dragon (web standard)
notwaldorf
89
5.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
GitHub's CSS Performance
jonrohan
1030
460k
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