Slide 1

Slide 1 text

஗ Ԇ ධ Ձ ͱ ݈ ߁ 2 0 1 6 - 1 0 - 1 6 O U C C LT ձ # 5 @susisu2413

Slide 2

Slide 2 text

஗ Ԇ ධ Ձ Ͱ ύ ʔ α ί ϯ Ϗω ʔ λ Λ ޮ ཰ Խ ͠ ͨ ࿩ Λ ͠ · ͢

Slide 3

Slide 3 text

ύ ʔ α ί ϯ Ϗω ʔ λ ʁ

Slide 4

Slide 4 text

ߏ จ ղ ੳ ͢ Δ ΍ ͭ 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

Slide 5

Slide 5 text

ೖ ྗ Τ ϥ ʔ ஋ ࢒ Γ ύʔα ύʔαΛؔ਺Ͱදݱ ʢ࣮༻্͸ΦϒδΣΫτͰϥοϓʣ

Slide 6

Slide 6 text

ೖ ྗ Τ ϥ ʔ ஋ ࢒ Γ ύʔα ύ ʔ α ύ ʔ α ύʔα ίϯϏωʔλ ύʔαίϯϏωʔλͰΑΓෳࡶͳύʔαΛߏங

Slide 7

Slide 7 text

༗ ໊ ͳ ͷ 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

Slide 8

Slide 8 text

࡞ ͬͯ Έ ͨ ʢ 2 ೥ લ ʣ

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

ͱ ͯ ΋ ศ ར ࣗ ࡞ ε Ϋ Ϧ ϓ τ ݴ ޠ G r a s s ί ϯύ Π ϥ ︙

Slide 11

Slide 11 text

ੑ ೳ ͸ ʁ

Slide 12

Slide 12 text

໿1000ߦͷ JSON × 1000ճ (Node.js v6.7.0) ଎ ౓ ൺ ֱ Parsimmon: 4.8 sec PEG.js: 8.47 sec Loquat: 72724ms ࣗ࡞: ? sec

Slide 13

Slide 13 text

໿1000ߦͷ JSON × 1000ճ ଎ ౓ ൺ ֱ Parsimmon: 4.8 sec PEG.js: 8.47 sec ࣗ࡞: 72.7 sec

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

ͳ ͥ ஗ ͍ ʁ

Slide 16

Slide 16 text

V 8 ͷ ϓ ϩ ϑ Ν Π ϥ Ͱ ௐ ΂ Δ node --prof parse.js node --prof-process isolate-0x*-v8.log https://github.com/v8/v8/wiki/Using%20V8’s %20internal%20profiler

Slide 17

Slide 17 text

஗ ͍ ΋ ͷ ͨ ͪ ύ ʔ α ͷ ݁ ߹ จ ࣈ ͷ ύ ʔε Τ ϥ ʔ ॲ ཧ

Slide 18

Slide 18 text

ࠓ ೔ ͷ ϝ Π ϯ Τ ϥ ʔ ॲ ཧ

Slide 19

Slide 19 text

Τ ϥ ʔ ॲ ཧ ߏ จ ղ ੳ ࣦ ഊ ࣌ ʹ ώ ϯ τ Λ ग़ ͢ ͨ Ί ϝ ο η ʔ δ ഑ ྻ ͷ ݁ ߹ ͳ Ͳ

Slide 20

Slide 20 text

ࣦ ഊ ͠ ͨ ͱ ͖ ͷ Έ ඞ ཁ

Slide 21

Slide 21 text

ࣦ ഊ ͢ Δ · Ͱ ܭ ࢉ ͠ ͳ ͍

Slide 22

Slide 22 text

஗ Ԇ ධ Ձ

Slide 23

Slide 23 text

ܭ ࢉ Λ ஗ Ԇ ͞ ͤ Δ ʹ ͸ ʁ let x = 1 + 2;

Slide 24

Slide 24 text

Ϋ ϩ ʔ δ ϟ ʹ ͢ Ε ͹ ྑ ͍ let x = () => 1 + 2;

Slide 25

Slide 25 text

ຖ ճ ؔ ਺ ݺ ͼ ग़ ͠ Ω ϟ ο γ ϡ ͞ Ε ͳ ͍ ࢖ ͍ ͮ Β ͍

Slide 26

Slide 26 text

Φ ϒ δΣ Ϋ τ Ͱ ϥ ο ϓ

Slide 27

Slide 27 text

ΠϯλʔϑΣʔε͕ڞ௨ͨ̎ͭ͠ͷΫϥεΛ࡞੒ ParseError LazyParseError ௨ৗ൛ ஗Ԇ൛

Slide 28

Slide 28 text

σʔλΛՃ޻͢Δͱ͖͸஗Ԇ൛Ͱ ܭࢉΛ஗Ԇͤ͞Δ ParseError LazyParseError Ճ޻ʢ݁߹ͳͲʣ Ճ޻

Slide 29

Slide 29 text

௨ৗ൛Ͱ͸ getter ͸ͦͷ··஋Λฦ͢ ParseError LazyParseError ஋

Slide 30

Slide 30 text

஗Ԇ൛Ͱ͸ getter ͸ධՁ͔ͯ͠Β஋Λฦ͢ ParseError LazyParseError ஋ ධՁ ݁Ռ͸Ωϟογϡ

Slide 31

Slide 31 text

݁ Ռ

Slide 32

Slide 32 text

໿1000ߦͷ JSON × 1000ճ ଎ ౓ ൺ ֱ ݩ: 72.7 sec վྑ൛: 28.4 sec ஗ԆධՁ͋Γ: ? sec

Slide 33

Slide 33 text

໿1000ߦͷ JSON × 1000ճ ଎ ౓ ൺ ֱ ஗ԆධՁ͋Γ: 11.2 sec ݩ: 72.7 sec վྑ൛: 28.4 sec

Slide 34

Slide 34 text

໿1000ߦͷ JSON × 1000ճ ଎ ౓ ൺ ֱ Parsimmon: 4.8 sec PEG.js: 8.47 sec վྑ൛ + ஗ԆධՁ: 11.2 sec

Slide 35

Slide 35 text

· ͱ Ί

Slide 36

Slide 36 text

஗ Ԇ ධ Ձ ͸ ͍ ͍ ͧ ܭ ࢉ ͷ ޮ ཰ Խ ଞ ʹ ΋ ॥ ؀ ఆ ٛ ͳ Ͳ

Slide 37

Slide 37 text

ܽ ఺ ΋ ͋ Δ ͷ Ͱ ஫ ҙ ࣌ ؒ ɾ ۭ ؒ త ί ε τ ࢥ Θ ͵ ε λ ο Ϋ ͷ ফ අ

Slide 38

Slide 38 text

ύ ʔ α ί ϯ Ϗω ʔ λ 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