Slide 1

Slide 1 text

RustͰVMܕਖ਼نදݱ
 ΤϯδϯͬΆ͍ͷΛ
 ΞϨͨ͠࿩ KOBA789

Slide 2

Slide 2 text

KOBA789 • େֶ΍ΊͯྉཧΛָ͠Έʹ͢ΔձࣾͰࣾһ
 ΍ͬͯΔ • ࣾͰ͸δϟόॻ͍ͯΔ͠಺༰ͱ͸ؔ܎ͳ͍ • େੲʹNode.jsͷຊॻ͍ͨؾ͕͢Δ • Node.jsྲྀߦΒͤͯ͝ΊΜͳ͍͞

Slide 3

Slide 3 text

KOBA789 ͪΐ͏Ͳ2೥લʹ৮ͬͯͨΒ͍͠

Slide 4

Slide 4 text

MeCab(w/ IPA dic) Ͱղੳͨ͠ܗଶૉྻʹ ύλʔϯϚον΍Γ͍ͨ KOBA789

Slide 5

Slide 5 text

KOBA789

Slide 6

Slide 6 text

10ྻxNߦ N͸ઍສΦʔμʔ KOBA789

Slide 7

Slide 7 text

ϕΫτϧྻʹਖ਼نදݱ KOBA789

Slide 8

Slide 8 text

ͳΜͱͳ͘VMܕ KOBA789

Slide 9

Slide 9 text

Rust͍͍ͱ͜Ζ • ྻڍܕ͕·ͱ΋ • ྻڍܕͷύλʔϯϚον͕·ͱ΋ • ໢ཏੑνΣοΫ͸ࠓ࣌ৗࣝͩΑͶ • Unicodeจࣈྻͷѻ͍͕·ͱ΋ • Ͱ΋ͬͯ଎͍ KOBA789

Slide 10

Slide 10 text

ॻ͍ͨ KOBA789

Slide 11

Slide 11 text

χʔϞχοΫ Jump:2 Fail Expect:1:໊ࢺ:1 Expect:2:αม઀ଓ:1 Next Expect:1:ಈࢺ:1 Expect:5:αมɾεϧ:1 Match:OK Noop KOBA789

Slide 12

Slide 12 text

ύϑΥʔϚϯε • Ϛγϯ: Xeon E3-1220@3.2GHz/16GB RAM • ର৅ϑΝΠϧ: 1.7GB 3400ສߦ • ࣮ߦ࣌ؒ: 56.18sec (͖ͬ͞ଌͬͨ) • 30.26 MB/sec KOBA789

Slide 13

Slide 13 text

νϡʔχϯά • Xcode ͷ Instruments Λ࢖͏ͱͳΜͱͳ͘
 ϓϩϑΝΠϧͰ͖Δ • εΫϦϓτݴޠͬΆ͘ࡶʹॻ͍ͨͷͰ
 jemalloc͕ͨ͘͞Μ KOBA789

Slide 14

Slide 14 text

ͦͷ͏ͪ • filebufferͱ͍͏crate͕͋ͬͯศརͦ͏ • mmap ͬΆ͍͜ͱ͢Δ΍ͭ • zero(less) allocation Ͱ͍͍ײ͡ʹϑΝΠϧ
 ॲཧ͢ΔςΫχοΫ஌Γ͍ͨ KOBA789

Slide 15

Slide 15 text

͔Μͦ͏ • ࠷ॳ͸lifetimeʹ຋࿔͞Ε·ͬͨ͘ • ϝϞϦͷؾ࣋ͪʹͳΔͱॻ͖΍͍͢ • Boxͱ͔Arcͱ͔Ұճ΋࢖Θͳͯ͘΋
 ͳΜͱ͔ͳΔ • ฒߦॲཧ΋ωοτϫʔΫ΋΍ͬͯͶ͐ • C++͋·Γॻ͔ͳ͍ͷͰmoveͱ͔Α͘Θ͔ͬͯͶ͐ KOBA789