Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JITコンパイルはじめの一歩

5,701 views

Published on

2014/10/27 関ジャバ HotSpot meetingで@jyukutyoが発表した「JITコンパイルはじめの一歩」の資料です。

Published in: Technology
  • Dating for everyone is here: ♥♥♥ http://bit.ly/36cXjBY ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ❤❤❤ http://bit.ly/36cXjBY ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ACCESS that WEBSITE Over for All Ebooks (Unlimited) ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... DOWNLOAD FULL EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { https://urlzs.com/UABbn } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

JITコンパイルはじめの一歩

  1. 1. -,7⏯␯␍⏠␧ ⎰⎙⏂⎯λഽ #MXNXWRァ⎙⏆⎐⎢⏈ア ݠ୉۝λ 1
  2. 2. ߢډࣅѻ
  3. 3. 阪田 浩一 文学部哲学科卒 3 @jyukutyo 著書 3冊 関西Javaエンジニアの会 (関ジャバ) 発起人・運営 Fight the Future http://jyukutyo.hatenablog.com/ フリュー株式会社 所属 プリ機と連携する 画像SNS「ピクトリンク」 開発・運用に従事. 会員数800万人! ScalaMatsuri スポンサー企業! エンジニア歴11年 35歳 SI業界での客先常駐 9年 Web系? 2年強 塾講師アルバイト
  4. 4. -90ຢ⎢⎌⏊
  5. 5. ⎰ ܞ௟⎯౎಺ࠋ⎯ ય⎨݂ࠜƧ
  6. 6. ⏉⏎⎘⎐⎋Ա⎅⎘⎿⎚
  7. 7. ⎿⎛⎰ ⎋⎖⏊⎅
  8. 8. -,7⏯␯␍⏠␧⎤⎧ъを
  9. 9. ٶව⎫଑զ⎨⎰
  10. 10. -,7␕⍬⏵⎯щ২␚⏳␯⎰ ߹۱ঽ⎬ ু␌⏠␄⏯⍬␅⏓ ␚⏳␯⏯⍬␅⎬ ബԀ⎚⏌ァんア
  11. 11. ⎔⎔⎨⎰ -,7⏯␯␍⏠␧⏓ ߹۱ߗ⎬ ஓଯ⏯␯␍⏠␧⎚⏌ ⎩⎅⎇Τය⎨छ⏂⎿⎚
  12. 12. -XVW,Q7LPH⏯␯␍⏠␧ ! ␝⏹⏿␅⎍څ⎴ࡥ⎖⏍⎠⎩⎎⎬ ␝⏹⏿␅⎯␌⏠␄⏯⍬␅⏓⏯␯␍⏠␧⎘⎧ ␉⏠␂⏟␒⎫␚⏳␯⏯⍬␅⎬ബԀ⎚⏌
  13. 13. ␝␦⏿␄
  14. 14. ⏯␯␍⏠␧݌⏀⎯ ⏯⍬␅⏓څ⎴ࡥ⎚⎯⎨る ߹۱⎍ਙ⎅
  15. 15. ␃␝␦⏿␄
  16. 16. ␝⏹⏿␅⏓⏯␯␍⏠␧⎚⏌ ࡽ๲⎬ ੒⎎⎫⏦⍬␌⍬␔⏿␅⎍ ⎃⏌
  17. 17. ⎔⎯⏯␯␍⏠␧⎯ ⏻⏠␛␯⏬⎨ ݂଱ш⏃߹޵⎚⏌
  18. 18. -90⎨⎰߹۱ߗ⎬ ␓␩␑⏝⏠␦␯⏬⎘る
  19. 19. ⏯␯␍⏠␧⎬ખ⎚⏌ ⏯⍬␅⏓౜ઐ⎚⏌
  20. 20. 最適化の種類 § ␝⏹⏿␅څ⎴ࡥ⎘⎯⏠␯␥⏠␯ш § ੺λ␃⏟⏵␍⏿⏽ § ֩૳ೱഇߧ⎯ݪ࢑ § ␧⍬␓わ⏞␯␩⍬␦␯⏬ § ౮Ξ⏽⏣⏿⏫ݪ࢑ § ␃⏿␅⏯⍬␅⎯ݪ࢑ § ␃⍬⏻わ␑␩⍬ѽॾ
  21. 21. ຶア ␝⏹⏿␅⎯⏠␯␥⏠␯ш
  22. 22. څ⎴ࡥ⎘⎧⎅⏌ ␝⏹⏿␅⎯ඕਹ⏓ څ⎴ࡥ⎘ٴ⎬ ⏯␐⍬⎚⏌
  23. 23. ⏠␝⍬⏴⎘⏅⎚⎅
  24. 24. ⎔⏍⎬⏉⎤⎧ ъ⎍⏉⎅⎯⎌をを
  25. 25. ࢡ⎖⎫ࡽ๲⎯ࣟ܄る ␝⏹⏿␅⏓څ⎴ࡥ⎚ ⏯⏵␄⎯൘⎍ ۿ⎐⎫⏌
  26. 26. ␃␑⏥␧␄⎨⎰ ␌⏠␄රභ⎯ ␌⏠␄⏯⍬␅⏓ԥ⏁ ␝⏹⏿␅⎍਻࣐⎩⎫⏌ ǩॴଯ⎫␧⍬␧
  27. 27. ⎠⎡るஓଯ⎫␙␦⏳⍬⏃ ⎃⏌⎯⎨る ਻࣐⎰ ⏞␓␦⏭⍬⏳␣␯⎕⎩⎬ ബш⎚⏌
  28. 28. ຶア ੺λ␃⏟⏵␍⏿⏽
  29. 29. ␙␦␞⍬␑⏟⏿⏫⎫ ␝⏹⏿␅څ⎴ࡥ⎘⎬⎋⎅⎧る ދࢻ⎚⏌ؠ⎍ബ⏐⏊⎫⎅ ⎩২଑⎘る
  30. 30. щ২␝⏹⏿␅٠ݲ⏓ ⏵␧⍬⎚⏌ ァ⏦⍬␌⍬␥⏠␅⎍ ޡๆ⎖⏍⏌⎌⏓ ⏽⏣⏿⏫⎘⎫⎅ア
  31. 31. ੯݂଱ш
  32. 32. ੺λ␃⏟⏵␍⏿⏽⎯২଑⎩ β⎇ؠ⎯⏠␯⏵⏻␯⏵ ⎨⎃⎤⎠ࣟ܄⎫⎪
  33. 33. ⏯␯␍⏠␧⎘⎠⏯⍬␅⏓ ෌ڹ⎬⎘⎧ ⏠␯⏻␓␦⏻⎬෸⏌ ァ⎿⎠⎰݁⏯␯␍⏠␧⎚⏌ア
  34. 34. ⎥⎿⏋
  35. 35. ⎥⎯␝⏹⏿␅⎬਻⎘⎧ ੯݂଱ш⎩ ݁⏯␯␍⏠␧⎍ ،⏋റ⎖⏍⏌⎔⎩⏃ ⏉⎐⎃⏌⎔⎩
  36. 36. ⏯␯␍⏠␧わ␞⍬␅
  37. 37. λ୞⎰ෳ⎬⎘⎠ FOLHQW VHUYHU ⏦␓⏳␣␯
  38. 38. FOLHQWゐ ⏯␯␍⏠␧ࡽ๲⎰ਙ⎅ १ढ़⎖⏍⏌⏯⍬␅⎰ಅҼଯઢ⎅ VHUYHUゐ ⏯␯␍⏠␧ࡽ๲⎰ઢ⎅ १ढ़⎖⏍⏌⏯⍬␅⎰ਙ⎅
  39. 39. FOLHQWゐ § ステップ1(インタプリタ) § 実行しながらホットなメソッドを検出する § ステップ2(ネイティブ) § ホットと判断したメソッドをJITコンパイル し、実行する
  40. 40. VHUYHUゐ § ステップ1(インタプリタ) § 実行しながらプロファイリングする § ステップ2(ネイティブ) § ホットと判断したメソッドをステップ1で取 得したプロファイリングデータを使ってJIT コンパイルし、実行する § プロファイリングデータを取得するため にインタプリタのフェーズが長い
  41. 41. -90⏤␯⏴␇⏞ ⎠⏌⏃⎯ ⎔⏍⏓ޡ⎅ഇ⎒⎮⎱ ⎫⏊⏔ん
  42. 42. ⎞⏔⎫ߗ੐⏃ ⎃⏋⎿⎘⎠Ƨ
  43. 43. ⏃⎇⎔⏔⎫ ⏦␓⏳␣␯ ޡ⎅⎿⎜⏔
  44. 44. ܞ⎰ ߢஓଯ⎬ ຑ൘⎩⏃ޡ⎤⎧⎅⎿⎚
  45. 45. ҕ৥ؠ⏯␯␍⏠␧ -'.⎨஖௡ァ⏦␓⏳␣␯ǩ⎨ޱ଑⎍಩์ア -'.X⎿⎨␌⏿⏫␙⍬␄ -'.⎨⎰␃␑⏥␧␄⎨ยڹ ! ǩ;;7LHUHGRPSLODWLRQ
  46. 46. અଯ⎬ٿ⎇⎩る
  47. 47. Քஓߗ⎬⎰ ⏓ਪ⎐ޡ⎅る ਙ⎐Քஓ⎚⏌
  48. 48. ।࣢⎬ஓݩ⎚⏌⏉⎇⎬ ⎫⏍⎱⏓␝⏠␯⎬ޡ⎅る ␍␑⏥⍬␚␯⏵⏓ۿ⏂⏌
  49. 49. ⏃⎇ࢢ⎘ ࣏⎘⎐٪⏌⎩る
  50. 50. ⏠␯⏻␓␦⏻⎨⎰⎫⎐ ⎯ઓҕ⎨ ␓␩␑⏝⏠␦␯⏬⎚⏌ ⏉⎇⎬⎚⏌
  51. 51. ⏯␯␍⏠␧␨␕␧ § level 0:インタプリタ § level 1:C1 フル最適化 § プロファイリングなし § level 2:C1 呼び出しとループのプロファ イリング § level 3:C1 フルプロファイリング § level 4:C2
  52. 52. ⏯␯␍⏠␧⎯ ࡽ๲൘൚
  53. 53. ⎍⎞⏍⎟⏍ ⏩␡⍬⏓ߖ⎥
  54. 54. ⎍⎞⏍⎟⏍ ⏩␡⍬⏓ߖ⎥
  55. 55. ⏩␡⍬⎯ૠ⎖⎬Ы⎙⎧ ᪭ખ⎫⎪⏓ ૛य़⎚⏌
  56. 56. ⏯⍬␅⏩␟⏿⏳␡௅⎬ ⏯␯␍⏠␧ڤ⎯ ⏯⍬␅⎍జટ⎖⏍⏌⎩る
  57. 57. ⏠␯⏻␓␦⏻わ␞⍬␅⎌⏊ ⏯␯␍⏠␧⎖⏍⎠⏯⍬␅⏓ ޡๆ⎚⏌␞⍬␅⎬ উ⏋੃⎉⏌
  58. 58. ⎔⏍⎰る␙⏠␯⏻ࢆ⎎Ԁ⎉ SRLQWHUVZL]]LQJ
  59. 59. ⎩څ⎱⏍⏌ ⎔⎩⏃⎃⏌
  60. 60. ⏯␯␍⏠␧␨␕␧⎯সΫ § level 0 - 3 - 4(理想的) § 0 - 2 - 3 - 4(C2のキューが長いとき) § 0 - 3 - 1(C2コンパイルができないメ ソッドのとき)?? § 0 - 4(C1でコンパイルできない、インタ プリタでプロファイリングしてC2する)
  61. 61. ໓ਞ݁⏯␯␍⏠␧
  62. 62. λ୞⏯␯␍⏠␧⎘⎠⎃⎩⏃ ␓␩␑⏝⏠␦␯⏬⏓ ਞ⎒⏌
  63. 63. ⎖⏊⎫⏌݂଱ш⎯ я௾ड़⎍⎃⏍⎱る ⏯⍬␅⏓݁⏯␯␍⏠␧ ⎚⏌
  64. 64. 2Q6WDFN UHSODFHPHQW ァ265ア
  65. 65. ␧⍬␓⎯ય⎨ ஔλ⎯␝⏹⏿␅⏓ څ⎴ࡥ⎘⎧⎅⏌ ⏉⎇⎫ࣟ܄
  66. 66. ␧⍬␓⎯݂ય⎬ ⏠␯⏻␓␦⏻⎌⏊ ⏯␯␍⏠␧⎘⎠⏯⍬␅⏓ ޡ⎇⏉⎇⎬ উ⏋੃⎉⏌
  67. 67. -,7⏯␯␍⏠␧⎯ ҷ௨൘൚
  68. 68. ;;3ULQWRPSLODWLRQ ! 75 1 3 java.lang.Math::min (11 bytes) 75 3 3 java.lang.String::charAt (29 bytes) 76 2 3 java.lang.AbstractStringBuilder::ensureCapacityInternal (16 bytes) 76 4 n 0 java.lang.System::arraycopy (native) (static) 77 5 3 java.lang.Object::init (1 bytes) 77 6 3 java.lang.String::hashCode (55 bytes) 77 7 3 java.lang.String::indexOf (70 bytes) 78 8 3 java.lang.String::length (6 bytes) 78 9 3 java.lang.AbstractStringBuilder::append (50 bytes) 78 10 3 java.lang.String::getChars (62 bytes) 78 11 3 java.lang.String::equals (81 bytes)
  69. 69. ⏯␯␍⏠␧⎖⏍⎠ ␝⏹⏿␅⎩ ߗԝる⏯␯␍⏠␧␨␕␧⎍ ⏐⎌⏌
  70. 70. ;;3ULQW7LHUHG(YHQWV ! 0.047899: [call level=0 [java.lang.Object.init()V] @-1 queues=0,0 rate=n/a k=1.00,1.00 total=128,0 mdo=0(0),0(0) max levels=0,0 compilable=c1,c1-osr,c2,c2-osr status=idle] 0.048180: [loop level=0 [sun.nio.cs.UTF_8$Decoder.decode([BII[C)I] @20 queues=0,0 rate=n/a k=1.00,1.00 total=29,1024 mdo=0(0),0(0) max levels=0,0 compilable=c1,c1-osr,c2,c2-osr status=idle] 0.048348: [loop level=0 [sun.nio.cs.UTF_8$Decoder.decode([BII[C)I] @20 queues=0,0 rate=n/a k=1.00,1.00 total=45,2048 mdo=0(0),0(0) max levels=0,0 compilable=c1,c1-osr,c2,c2-osr status=idle] 0.048414: [loop level=0 [java.lang.String.hashCode()I] @24 queues=0,0 rate=n/a k=1.00,1.00 total=73,1024 mdo=0(0),0(0) max levels=0,0 compilable=c1,c1-osr,c2,c2-osr status=idle] 0.049419: [call level=0 [java.lang.String.hashCode()I] @-1 queues=0,0 rate=n/a k=1.00,1.00 total=128,1302 mdo=0(0),0(0) max levels=0,0 compilable=c1,c1-osr,c2,c2-osr status=idle] 0.049514: [call level=0 [java.lang.Object.init()V] @-1 queues=0,0 rate=n/a k=1.00,1.00 total=256,0 mdo=0(0),0(0) max levels=0,0 compilable=c1,c1-osr,c2,c2-osr status=idle] 0.049557: [compile level=3 [java.lang.Object.init()V] @-1 queues=0,0 rate=n/a k=1.00,1.00] !
  71. 71. ⏉⏋࣏ݔ⎬ ٪⏍⏌
  72. 72. ⎖⏊⎬࣏ݔ⎬ ٪⏌⎬⎰
  73. 73. ;;/RJRPSLODWLRQ ! ;0/␑⏥⍬␚⏿␄⎨ࡥ⏌ ;;8QORFN'LDJQRVWLF902SWLRQV ⏓ஔߗ⎬঎଑⎚⏌಩์⎃⏋ !
  74. 74. KRWVSRWBSLGORJ ! nmethod compile_id='2' compiler='C2' entry='0x000000010508d220' size='1504' address='0x000000010508d0d0' relocation_offset='296' insts_offset='336' stub_offset='688' scopes_data_offset='736' scopes_pcs_offset='864' dependencies_offset='1456' handler_table_offset='1464' nul_chk_table_offset='1488' method='java/lang/String indexOf (II)I' bytes='70' count='366' backedge_count='6418' iicount='366' stamp='0.122'/ !
  75. 75. ⏃⎇஬⏂⎿⎜⏔Ƨ
  76. 76. ␀⍬␧⏓ޡ⎋⎇ん
  77. 77. -,7:DWFK KWWSVJLWKXEFRP$GRSW2SHQ-'.MLWZDWFK
  78. 78. ⏷⏿␄⏞⏿␓⎰ FORQH⎘⎧ PYQSDFNDJH ๆΤ⎖⏍⎧⎅⏌ ODXQFK8,VKEDW
  79. 79. ⏓߹۱⎚⏌⎡⎒
  80. 80. ૝ԑ੺ん
  81. 81. ␩⏬⏓ѽॾ⎚⏌⎩⎎⎰
  82. 82. ;;7UDFHODVV/RDGLQJ ⎨⏫␥⏵␩⍬␅ߗ⎯ ࣣൎ⏃ࡥ⎚
  83. 83. ⎖⏊⎬
  84. 84. +RW6SRW⎯ ௅ೱ⏦␓⏳␣␯ ;;3ULQW$VVHPEO ⏓⎥⎒⏍⎱ ⏞⏷␯␒␦⎯⏯⍬␅⏓ ٪⏍⏌
  85. 85. ǩ+RW6SRWGLVDVVHPEOHHU ァ+6',6ア ⎍ധ୘಩์ KWWSVNHQDLFRPSURMHFWVEDVHKVGLV -'.⎫⏊␑⏝⏠␧⏓-$9$B+20(MUHOLEVHUYHU⎹ ⏯␐⍬⎚⏌
  86. 86. ␃␞
  87. 87. ⎕॥૗ ⎃⏋⎍⎩⎇ ⎕⎗⎅⎿⎘⎠ん

×