Slide 1

Slide 1 text

ʙय़ͩʂՖคͩʂ-5େձͩ͊͊͊͋͋͋͋ʂʂʂ̍ʙ !QZBNB(.01FQBCP *OD Զͷ࿩Λฉ͚ʂʂ-5େձ -JOVYίϚϯυͰϘτϧωοΫ Λௐ΂Δ

Slide 2

Slide 2 text

ϗεςΟϯάࣄۀ෦νʔϑςΫχΧϧϦʔυ ࢁԼ࿨඙!QZBNB

Slide 3

Slide 3 text

ϖύϘ෱Ԭ

Slide 4

Slide 4 text

αʔόαΠυɺϑϩϯτΤϯυɺ ΠϯϑϥΤϯδχΞશһདྷͯ͘Εʂʂʂʂ̍ ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU

Slide 5

Slide 5 text

Ϙτϧωο Ϋௐࠪ

Slide 6

Slide 6 text

ʮͳΜ͔Θ͔ΒΜ͚Ͳɺ Կ͔͕஗ͯ͘ ॲཧ͕ॏ͍ʯ

Slide 7

Slide 7 text

಄ѱͦ͏

Slide 8

Slide 8 text

ύϑΥʔϚϯεղੳʹ͸ ͍͔ͭ͘ͷखஈ͕͋Δ

Slide 9

Slide 9 text

ͳΜ͔͍͍ͩͨͲͷձࣾʹ΋͍Δ͍͢͝ਓʹฉ͘ w͍͢͝ਓʹฉ͘ͱɺ͍͍ͩͨղܾͯ͘͠ΕΔ w͍͢͝ਓ͸͍͢͝ͷͰɺͦͷ৔ͰΘ͔Βͳͯ͘΋ɺ͍͍ͩͨ࣍ͷ೔ʹ
 ʮࡢ೔ͷ͋ΕΘ͔ͬͨΑʂʂʂʯͱ͔ௐ΂͖ͯͯ͘ΕΔ w͍͢͝ਓʹฉ͘ͱɺ͍͢͝ਓ͕ؤுΔ͚ͩͰɺࣗ෼͕ؤுΒͳ͍͔Β ࣗ෼͕੒௕͠ͳ͍

Slide 10

Slide 10 text

ϓϩϑΝΠϦϯά wIUUQTHJUIVCDPNUNNTUBDLQSPG ݴޠ໊ϓϩϑΝΠϥ<ݕࡧ>

Slide 11

Slide 11 text

-JOVYͷίϚϯυͰௐ΂Δ wHEC5IF(/6%FCVHHFS wTUSBDF5SBDFTZTUFNDBMMTBOETJHOBMT wQFSG1FSGPSNBODFBOBMZTJTUPPMTGPS-JOVY wWBMHSJOEBTVJUFPGUPPMTGPSEFCVHHJOHBOEQSPpMJOHQSPHSBNT

Slide 12

Slide 12 text

ࣄྫ

Slide 13

Slide 13 text

NSVCZͷ"1*ΞΫηε͕཯଎ NSVCZ DMJFOU "1*4FSWFS SFTPVSDFFYBNQMF NSVCZͷ$MJFOU͔Β͋Δ"1*Λ࣮ߦͯ͠ .#ͷϨεϙϯεΛऔಘ͢Δ৔߹ +40/

Slide 14

Slide 14 text

ࣄྫ ॠؒతʹ(CZUF͘Β͍ ϝϞϦ࢖͏

Slide 15

Slide 15 text

WBMHSJOEͰϝϞϦͷΞϩέʔγϣϯΛݟΔ # valgrind curl http://localhost/resource/example > /dev/null … ==18619== HEAP SUMMARY: ==18619== in use at exit: 0 bytes in 0 blocks ==18619== total heap usage: 1,863 allocs, 1,863 frees, 211,125 bytes allocated # valgrind /home/pyama/mruby test.rb … ==12811== HEAP SUMMARY: ==12811== in use at exit: 0 bytes in 0 blocks ==12811== total heap usage: 51,721 allocs, 51,721 frees, 12,028,345,116 bytes allocated

Slide 16

Slide 16 text

ʗ ?P? ʘ(

Slide 17

Slide 17 text

TUSBDFͰγεςϜίʔϧͷ౷ܭΛऔΔ # strace -fc /home/pyama/mruby test.rb % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 73.00 0.006317 2 3361 munmap 23.27 0.002014 11 183 brk 2.62 0.000227 0 1734 read 1.11 0.000096 0 3380 mmap 0.00 0.000000 0 3 write 0.00 0.000000 0 16 open 0.00 0.000000 0 23 close NVONBQ͕ࢧ഑త IUUQTMJOVYKNPTEOKQIUNM-%1@NBOQBHFTNBONNBQIUNM

Slide 18

Slide 18 text

QFSGΛར༻ͯ͠ίʔϧάϥϑΛऔಘ͢Δ IUUQNSVCZPSHEPDTBQJIFBEFSTNSVCZ@'TUSJOHIIUNMNSC@TUS@QMVTGVODUJPO # perf record --call-graph dwarf -- /home/pyama/mruby test.rb # perf report -g -G —stdio 94.35% 0.03% mruby mruby [.] mrb_str_plus | ---mrb_str_plus | --20.06%-- mrb_vm_exec mrb_vm_run … NSC@TUS@QMVT͕ࢧ഑త

Slide 19

Slide 19 text

৘ใ͔ΒԾઆΛཱͯΔ wॲཧ͸)551ϦΫΤετͰϨεϙϯεϘσΟ͸αΠζ͕େ͖͍ wϝϞϦ(#࢖ͬͯΔΦϫλ wNVONBQ͕ࢧ഑తͰճ਺΋ଟ͍͜ͱ͔ΒɺϝϞϦͷ֬อɺղ์͕ଟ ͍ͷͰ͸ͳ͍͔ʁ wNSC@TUS@QMVT͕ࢧ഑తͰ͋Δ͜ͱ͔Βɺจࣈྻ݁߹͕ଟ͍͜ͱ͕ݪ ҼͬΆ͍ͳʁ NSC@TUS@QMVTSVCZFbDlBzlCz`

Slide 20

Slide 20 text

ΧΫΧΫ γΧδΧ

Slide 21

Slide 21 text

ݪҼ͸)551ϦΫΤετͷόοϑΝαΠζ IUUQTHJUIVCDPNNBUTVNPUPSZNSVCZTJNQMFIUUQQVMM NSVCZ DMJFOU "1*4FSWFS SFTPVSDFFYBNQMF +40/ ιέοτ͔Β+40/Λड͚औΔࡍͷόοϑΝαΠζ͕CZUFͰ͋ͬͨ͜ͱ͔Βɺ ಡࠐͷϧʔϓճ਺͕ଟ͘ͳ͍ͬͯͨɻόοϑΝͷαΠζΛCZUF΁มߋ͢Δ͜ͱͰ ݁Ռͱͯ͠ϧʔϓճ਺ΛݮΒͯ͠จࣈྻ݁߹ͷճ਺ΛݮΒͨ͠

Slide 22

Slide 22 text

NSVCZTJNQMFIUUQ while (t = socket.read(1024)) if block_given? yield t next end ɹ #όοϑΝ͕গͳ͍ͱϧʔϓճ਺͕૿͑ͯɺ݁߹ճ਺͕૿͑ͯແବʹϝϞϦ֬อ response_text += t end ͔͠΋ɺ($͕૸Δ·Ͱ͸։์͞Εͳ͍

Slide 23

Slide 23 text

΋͏Ұา ౿ΈࠐΉ

Slide 24

Slide 24 text

NSC@TUS@QMVT NSVCZͰ͸จࣈྻ݁߹ͷࡍʹ݁߹݁Ռจࣈྻͷ ϝϞϦΛ֬อ͢Δ

Slide 25

Slide 25 text

NSVCZTJNQMFIUUQ while (t = socket.read(1024)) if block_given? yield t next end response_text << t end ͞ΒʹDPODBUʹ͢Δ͜ͱͰɺແବͳྖҬ֬อΛ΍ΊΔ

Slide 26

Slide 26 text

NSC@TUS@QMVT74NSC@TUS@DBU TUSJOHlBCz TUSJOHlBz TUSJOHlCz TUSJOHlBz TUSJOHlCz TUSJOHlBz TUSJOHlCz TUSJOHlBCz

Slide 27

Slide 27 text

IUUQTUFOTOBQPODPNBSDIJWFT

Slide 28

Slide 28 text

·ͱΊ wϓϩϑΝΠϥ΍ίϚϯυΛར༻ͯ͠৘ใΛूΊΑ͏ wूΊͨ৘ใ͔ΒԾઆΛཱͯΑ͏ wԾઆΛݕূ͠Α͏ wσόοάίʔυͰ͋Ε͜Εࢼ͢ wਂ͘ίʔυΛಡΉɺ࣮૷ʹഭΔ

Slide 29

Slide 29 text

5IBOLZPV ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU