$30 off During Our Annual Pro Sale. View Details »

Node8.3.0について

 Node8.3.0について

buildersconの飛び込みLT資料。

以下の記事のスライド版です。
http://abouthiroppy.hatenablog.jp/entry/2017/08/03/095304

Yuta Hiroto

August 04, 2017
Tweet

More Decks by Yuta Hiroto

Other Decks in Programming

Transcript

  1. Node8.3.0ʹ͍ͭͯ
    Yuta Hiroto(@about_hiroppy)
    ඈͼࠐΈLT(5min)

    View Slide

  2. Me
    Twitter: about_hiroppy

    GitHub: abouthiroppy
    ኍށ ༟େ

    View Slide

  3. ݱࡏͷNodeͷঢ়گ
    • current(master) - v9.0.0-pre
    • latest - v8.2.1
    • Current Proposal - v8.3.0
    • LTS(Long Term Support)
    • Boron - v4.8.4 (status: Maintenance)
    • Argon - v6.11.2 (status: Active)
    • Carbon - v8.x (status: Pending(2017/10 ~))

    View Slide

  4. v8.3.0 proposalͷେ͖ͳมߋ
    • V8ͷv6.0΁ΞοϓάϨʔυ
    • ͜ΕʹΑΓɺύϑΥʔϚϯεϓϩϑΝΠϧ

    ͕େ෯ʹมߋ͞ΕΔ
    • WHATWG Encoding Standard 

    (TextDecoderͱTextEncoder)͕࣮૷͞Εͨ
    https://github.com/nodejs/node/pull/14594

    View Slide

  5. v8.3.0 proposalͷେ͖ͳมߋ
    • V8ͷv6.0΁ΞοϓάϨʔυ
    • ͜ΕʹΑΓɺύϑΥʔϚϯεϓϩϑΝΠϧ

    ͕େ෯ʹมߋ͞ΕΔ
    • WHATWG Encoding Standard 

    (TextDecoderͱTextEncoder)͕࣮૷͞Εͨ
    https://github.com/nodejs/node/pull/14594

    View Slide

  6. TurboFan + Ignition

    ͕σϑΥϧτͱͳΔʂ

    View Slide

  7. NodeͱV8
    • V8ͷv5.9͔ΒσϑΥϧτͱͳΔ

    TurboFanͱIgnitionͱ͍͏ͷ͕͋Γ·͢
    • NodeͰॳΊͯσϑΥϧτʹͳΔͷ͕

    ࠓճͷมߋͱͳΓ·͢
    • v5.9͸NodeͷϦϦʔεϥΠϯʹೖ͓ͬͯΒͣɺ

    v6.0͔ΒೖΔ͔ΒͰ͢

    View Slide

  8. TurboFan + Ignition
    • TurboFan
    • JIT CompilerͰCrankshaft͔Βஔ͖׵ΘΔ΋ͷͰ͢
    • ES2015Ͱͷ࠷దԽࠔ೉ͳ෦෼΍try-catchͷ࠷దԽͳͲ͕ՄೳͱͳΓ·͢
    • chrome 41͔Βஈ֊తʹ࢖༻͞Εͯ·ͨ͠
    • Ignition
    • Register machine
    • ϞόΠϧ୺຤ͷϝϞϦফඅ࡟ݮΛ໨ඪͱͯ͠࡞ΒΕͨΠϯλϓϦλ
    • JSͷίʔυΛbytecodeʹ͠·͢

    View Slide

  9. V8ͷ࣮ߦϑϩʔ

    https://docs.google.com/presentation/d/1OqjVqRhtwlKeKfvMdX6HaCIu9wpZsrzqpIVIwQSuiXQ/edit#slide=id.g1357e6d1a4_0_58

    View Slide

  10. ϕϯνϚʔΫ

    View Slide

  11. Node Core
    • Internal Modules(V8 v5.9)
    • buffers

    events

    http ()

    querystring

    streams

    string_decoder

    url

    util

    v5.9Ͱ͸ओʹࠨͷϞδϡʔϧͷ

    ϕϯνϚʔΫ͕v5.8

    ΑΓԼ͕ͬͯ͠·ͬͨ

    ͔͠͠ɺv6.0/6.1ͰTurboFan

    ͷଟ͘ͷ໰୊఺͕վળ͞ΕͨͷͰ

    ࠓޙ͸΋ͬͱྑ͘ͳΔ

    View Slide

  12. node benchmark.js 390.80s cpu 8:16.27 total
    webpack

    v8.2.1

    (V8 v5.8)
    v8.3.0

    (V8 v6.0)
    node benchmark.js 385.03s cpu 7:47.66 total

    View Slide

  13. Loading:
    Load Performance median: 147.627503ms
    Single File:
    CPU Speed is 3100 with multiplier 13000000
    Performance budget exceeded: 5423.646407ms (limit: 4193.548387096775ms)
    Multi Files (0 files):
    CPU Speed is 3100 with multiplier 39000000
    Performance budget exceeded: 13073.789987ms (limit: 12580.645161290322ms)
    ESLint

    Loading:
    Load Performance median: 141.143209ms
    Single File:
    CPU Speed is 3100 with multiplier 13000000
    Performance budget exceeded: 5300.968599ms (limit: 4193.548387096775ms)
    Multi Files (0 files):
    CPU Speed is 3100 with multiplier 39000000
    Performance budget exceeded:13120.178363ms (limit: 12580.645161290322ms)
    v8.2.1

    (V8 v5.8)
    v8.3.0

    (V8 v6.0)

    View Slide

  14. ϕϯνϚʔΫʹؔͯ͠
    • جຊతʹվળ͞Ε͍ͯΔ(v8.2.1͔Βv8.3.0)
    • NodeͷInternal modulesͰ͸

    100%Ҏ্ͷվળ΋͋Ε͹ɺѱԽ΋͋Δ

    View Slide

  15. ·ͱΊ
    • 8݄தʹ8.3.0͕ϦϦʔε͞Ε·͢
    • NodeͷV8͕v6.0΁ΞοϓάϨʔυ͞ΕΔ

    5.8 → 6.0
    • WHATWG Encoding Standard͕ೖΔ
    • ࠓޙɺNode, Chrome͸ߋʹ଎͘ͳΔ

    View Slide

  16. ͜ͷLTͷهࣄ

    Node8.3.0ͰσϑΥϧτʹͳΔTF/IʹؔΘΔ

    ϕϯνϚʔΫʹ͍ͭͯ
    http://abouthiroppy.hatenablog.jp/entry/2017/08/03/095304

    View Slide

  17. ౦ژNodeֶԂࡇ2017

    CFPͷక੾͕8݄ͷ15೔ͳͷͰ
    ൃද͍ͨ͠ํ͸ͥͻԠื͍ͯͩ͘͠͞ʂʂʂ

    View Slide

  18. Thanks!

    View Slide