ã«ããã®äž-圌ã®ã¬ããŒãã®ãã³ãŒãã
ãããŠãããã§ãã¬ãŒã³ããŒã·ã§ã³èªäœãèŠã€ããããšãã§ããŸãïŒ jpoint-April2017-perf-keynote.pdf
ã¹ããŒã«ãŒã«ã€ããŠ
Alexey Shipilev-10幎以äžã«ãããJavaããã©ãŒãã³ã¹ã®åé¡ã çŸåšã¯Red Hatã§åããŠãããããã§OpenJDKãéçºãããã®ããã©ãŒãã³ã¹ã«åãçµãã§ããŸãã JMHãJOLãJCStressãªã©ãOpenJDKã®ããã€ãã®ãµããããžã§ã¯ããéçºããã³ãµããŒãããŸãã Red Hatã«å ¥ç€Ÿããåã圌ã¯Intelã§Apache Harmonyã«åãçµã¿ããã®åŸOracleã«è²·åãããSun Microsystemsã«ç§»ããŸããã çç£æ§ãšãã«ãã¹ã¬ããã®åé¡ã«åãçµãã§ããå°é家ã°ã«ãŒããšã³ãã¥ããã£ã«ç©æ¥µçã«é¢äžããŠããŸãã
ç§ã¯Red Hatã§åããŠããŸãã 以åãç§ãOracleã§åããŠãããšãããã»ãŒãããŒããŒãã¹ã©ã€ããæ¿å ¥ããŸããã 補åã«ãœãªã¥ãŒã·ã§ã³ãå®è£ ããããšããŠããå Žåãããã«äœãçå®ã§äœãããã§ãªãããæããŠãããå°é家ãéãããšã¯çŽ æŽãããããšã§ãã
倧ïŒéçºã®æåã®åºæºã¯äœã§ãã
補åãéçºããŠãããšããŸãã ããªãã«ãšã£ãŠæåãã補åãšã¯äœã§ããïŒ ç§ãã¡ã¯ãã¹ãŠåçšããã°ã©ããŒã§ãã ã³ãŒãã£ã³ã°ãããã®ã®çµŠäžãæ¯æãããšã§ãèªåã欺ãããšãã§ããŸãã ããããå®éã«ã¯ã補åãæäŸãããµãŒãã¹ãŸãã¯è£œåå šäœã販売ããããã«ã絊äžãæ¯æãããŸãã

ãããã補åã®æåã®ããã®çŽç²ã«éçºäžã®åºæºã¯äœã§ããïŒããžãã¹ç®æšãé€ãïŒïŒ
- ããã°ã©ããŒãšã³ãã¥ãã±ãŒã·ã§ã³ããšããšãã圌ãã¯éåžžãè¯ãïŒæåããïŒè£œåã¯æ£ããå®è£
ãæã€è£œåã ãšèšããŸã ã
- ãã®åŸãèŠåå¡ãæ¥ãŠèšããŸããããã¡ãããããªãã¯ããã§ã ãŸãããŸããããããã«ç©Žããªãããšã確èªããã®ã¯è¯ãããšã§ããã ãã以å€ã®å Žåã¯è²©å£²ããŸããããã®åŸåœŒãã¯ç§ãã¡ãæ³å»·ã«åŒããã蟌ã¿ãŸããã ãã ããããããã€ã³ãã§ã¯ãããŸããã
- ãããžã§ã¯ãã®æåã®äž»ãªåºæºã¯ããŠãŒã¶ãŒã®åžæã§èµ·ãã£ãããšã®é å®ã§ã ã ãã¡ãããåªããããŒã±ãã£ã³ã°éšéãããã°ã圌ã¯çµæã圌ãæãã§ãããã®ã§ãããšã¯ã©ã€ã¢ã³ãã«èª¬æã§ããŸãã ããããã»ãšãã©ã®å Žåãã¯ã©ã€ã¢ã³ãã«ãããç解ããŠãããããã§ãã å€ãã®ããã°ã©ããŒã¯ãããã§ããããã«ãç®è³ªäžã§ããããæå³ããŸããããããçŽæ¥å£é ã§è©±ã人ã¯ã»ãšãã©ããŸããã
- 4äœã®ã©ããã«ã¯éçºã®ã¹ããŒããšå®¹æãããããŸã ã ããã¯å©äŸ¿æ§ã§ãããããã°ã©ãã®çæ°ã§ã¯ãããŸããã éçšäžã«HRãšè©±ããããšãããããçš®é¡ã®ãã³ããããµãŒãžãªã©ãçŽæãããŸãããå®éã«ã¯ãããªãã¯ãŸã åããŠãããèŸããªãéããããžãã¹ã¯ããã§ã®ç掻ãæ°ã«ããŸããã ãŸããã³ãŒãã¯æ¡ä»¶ä»ãã§é©åã«èšè¿°ãããŠããããŠã£ã³ããŠããé£ã³åºããããå¥ã®äŒç€Ÿã§ä»äºãããããšããããã§ã¯ãããŸããã
- éåžžã ããã©ãŒãã³ã¹ã¯åªå
床ãªã¹ãã§ããã«äœããªããŸãã å€ãã®å Žåãæåã®åºæºã«ãããããŸããã 補åã¯å°ãªããšãäœããã®åœ¢ã§åããŠããŸãããããŠç¥ã«æè¬ããŸãã
ãã®ãããHabréã§ã®Javaã®ããã©ãŒãã³ã¹ã«é¢ããæçš¿ãèªãã§ãããã«åæ§ã®ã³ã¡ã³ãã衚瀺ãããŠããããšã«é©ããŠããŸãã

å°é家ã¯æ¬¡ã®ããã«è¿°ã¹ãŠããŸãã 圌女ã¯å æ°ã«åããŠããŸãã ç§ãã¡ã¯æºè¶³ããŠããŸãããã¹ãŠãé 調ã§ããã ããããã³ã¡ã³ããŒã¿ãŒãæ¥ãŠçããŸããã4人ã®å°é家ã®èª°ããJavaãé«éãšè©äŸ¡ããŠããªãããšã¯éåžžã«éèŠã§ãã ããããååãã€æºè¶³ã®ãããã®ã§ããã
æªããšèšããŸã ããžãã¹ã®èŠ³ç¹ããããã¯ãããžãŒãããžãã¹åºæºãæºãããŠããå Žåã¯ãç¥ã«æè¬ããŸãïŒ ç§ã¯ãã¹ãŠããªãããã«ãã¹ã ãŒãºã«ãå®ç§ã«èããã¹ãã ãšããçæ³äž»çŸ©çãªèãã¯æã£ãŠããŸããã ããã¯èµ·ãããŸãã-éåžžã補åã«ã¯ãšã©ãŒãå«ãŸããŠããŸãã
æ£ããããã°ã©ã ãšéãããã°ã©ã
人ã ã¯é·ãéãããã°ã©ã ã®æ£ããã«ã€ããŠäºéã«èããããšãåŠã³ãŸããã ïŒèŽè¡ã«å°ããïŒèª°ã圌ã®ããã°ã©ã ã«ãã°ããããšæ£çŽã«èšãããšãã§ããŸããïŒ ïŒããŒã«ã«ã¯å€ãã®æããããŸãïŒå€§å€æ°ã ããã§ãã圌ãã¯èªåãã¡ã®ããã°ã©ã ãå€ããå°ãªããæ£ãããšä¿¡ããŠããŸãã æ£ããããã°ã©ã ã®æŠå¿µã¯ãé«éããã°ã©ã ã®æŠå¿µãšå¯Ÿç§°çã§ãã

ãæ£ããããã°ã©ã ããšã¯ããŠãŒã¶ãŒã®ãšã©ãŒã衚瀺ãããªãããã°ã©ã ã§ãã ã€ãŸããå®éã«ã¯ãšã©ãŒããããŸããããŠãŒã¶ãŒã«è£œåã®è³Œå ¥ãæåŠãããããšã¯ãããŸããã ãé«éããã°ã©ã ãã«ã¯å¯Ÿç§°çãªç¶æ³ããããŸããããã©ãŒãã³ã¹ã®åé¡ããªããšããããšã§ã¯ãªãããŠãŒã¶ãŒãäœããå®è¡ããããšãããã³ã«ãããã®åé¡ãçºçããããã§ã¯ãããŸããã
ãæååºæºã«æè³ããŸãããã æåã«ã¯æ©èœãšããã©ãŒãã³ã¹ã®äž¡æ¹ã®åºæºããããŸããããã°ã©ã ã100ããªç§ãæ åœããã®ãé©åã§ãã çãã¯ïŒ ãããå ã«é²ã¿ãŸãããã
ãæ£ããããã°ã©ã ã®ãã°ã®æ°ã¯éåžžããã£ãŠããŸããã ããã¯ããããžã§ã¯ãã®æ人æã®ææšã®1ã€ã«éããŸãããããã°ã©ã ã«ãã°ããªããšããããšã¯ããã°ãã©ãã«ãŒã«ãã°ãç»é²ããããšã誰ãæ°ã«ããªããšããããšã§ãïŒãŠãŒã¶ãŒãããªãããã§ãïŒïŒã ããã©ãŒãã³ã¹ã®åé¡ã«ã€ããŠãåã話ã§ãã ããã©ãŒãã³ã¹ã®åé¡ã¯æ¢ç¥ã§ãããããã¯ãé«éãããã°ã©ã ã§ãããšèšããŸãã ïŒèªç©ºèŠç©ãããäœæïŒ

æ£ããããã°ã©ã ãšé«éããã°ã©ã ã®äž¡æ¹ã§ããããã®ããã©ãŒãã³ã¹ãšæ©èœã®ãã°ãåé¿ããæ¹æ³ãç¥ãããŠããŸãã FAQã«ã¯æ¬¡ã®ãããªãã®ããããŸããããããããšãå·ã€ããŸãã ãŸãã ãããããªãã§ãã ãã ãã
ãããžã§ã¯ãã®éçºæ®µé-ããããžã®æ²ç·ã W
ç§ãããã©ãŒãã³ã¹äœæ¥ã«åå ããã»ãšãã©ãã¹ãŠã®ãããžã§ã¯ãã¯ãããã€ãã®æšæºçãªéçºãã§ãŒãºãçµãŠããŸãã ç§ã¯ãã€ãŠããããã®ãã§ãŒãºã次ã®ããã«ãªãããšãå®åŒåããŸããã

ããã¯ãã©ã¡ããªãã¯ã°ã©ãã§ããæéã¯ãã€ã³ããAããããã€ã³ããBãããCãããDãããEãã«æµããŸãã 瞊座æšè»žã«æ²¿ã£ãŠããã©ãŒãã³ã¹ãããã暪座æšè»žã«æ²¿ã£ãŠæœè±¡çãªã³ãŒãã®è€éãããããŸãã
éåžžããã¹ãŠã¯ããã£ãããšããããã£ãããšåäœãããããã¿ã€ãããµã€ã¯ãªã³ã°ãã人ã ããå§ãŸããŸãã ç§ãã¡ã¯èªè»¢è»ãèªéã§åŽ©ããªãããã«èªè»¢è»ã§èµ°ãã®ã§ãããã¯éåžžã«è€éã§ãã
æé©åãéå§ãããåŸããã£ãããšãããŸããŸãªéšåã®æžãæããéå§ãããŸãã ãã®ã°ãªãŒã³ãŸãŒã³ã«ããéçºè ã¯ãéåžžããããã¡ã€ã©ãŒã䜿çšããŠãæããã«ã²ã©ãæžãããã³ãŒããæžãæããŸãã ããã«ãããåæã«ã³ãŒãã®è€éãã軜æžããïŒäžè¯éšåãæé€ããããïŒãããã©ãŒãã³ã¹ãåäžããŸãã
ãã€ã³ããBãã§ããããžã§ã¯ãã¯ã䞻芳çããªãçŸãã®ããŒã¯ã«éããŸããããã¯ãããã©ãŒãã³ã¹ãè¯å¥œã§ã補åã®ãã¹ãŠãè¯å¥œã§ããããã«èŠãããšãã§ãã
ããã«ãéçºè ãããé«ãããã©ãŒãã³ã¹ãå¿ èŠãªå Žåã¯ãããæ£ç¢ºãªãããã¡ã€ã©ãŒãååŸããé©åãªã¯ãŒã¯ããŒããäœæããããããæ éã«ç· ãããšãã€ãšããŒãŸãŒã³ã«ç§»åããŸãã ãã®ããã»ã¹ã§ã圌ãã¯çç£æ§ã®ããã§ãªããã°åœŒããããªãã§ãããããšãããã§è¡ããŸãã
ããã«å¿ èŠãªå Žåã¯ãéçºè ãçç£æ§ã®æåŸã®ããŒã»ã³ããåŸãããã«è£œåãã²ããå§ãããšããããžã§ã¯ãã¯ã¬ãããŸãŒã³ã«ãªããŸãã ãã®ãŸãŒã³ã§äœããããã¯æ確ã§ã¯ãããŸããã å°ãªããšããã®äŒè°çšã®ã¬ã·ãããããŸã-JPoint / JokerConf / JBreakã«è¡ãã補åéçºè ãæ·åããŠãäžå±€ã®æ²çãç¹°ãè¿ãã³ãŒããæžãæ¹æ³ãæããŠãã ããã ååãšããŠãèµ€ããŸãŒã³ã«ã¯ãäžå±€ã§çºçããåé¡ãç¹°ãè¿ããã®ãããããã§ãã
ã¬ããŒãã®æ®ãã®éšåã§ã¯ããããã®é åã§éåžžäœãèµ·ãã£ãŠãããã詳ãã説æããŸãã
ã°ãªãŒã³ãŸãŒã³
ã°ãªãŒã³ãŸãŒã³ã®åæ©ä»ãã«ãŒãã¯ããã«ãŒããã©ãŒã¹ã«ããã³ãŒãã®ããªãšã®æŠãã§ãã

ãã«ãŒããã©ãŒã¹ãšã¯ãæ£ç¢ºãªããŒã«ãå¿ èŠãªãããšãæå³ããŸãã ã°ãªãŒã³ãŸãŒã³ã«ã¯ããã€ãã®ç²Ÿç¥çãªtrapããããŸãã
ç§ã®ãæ°ã«å ¥ãã¯ããæ£åžžã«ãããã¡ã€ã«ããããäœãããªããã§ãã

ãShipilevã®ã¬ããŒããèããŠãã ãããéåžžã®ãããã¡ã€ã«ãäœæããå¿ èŠããããã©ãããæããŠãããŸããã ç§ã¯ãããèšã£ãããšããªãã ããªããã°ãªãŒã³ãŸãŒã³ã«ãããšãã蚺æã®ç²ŸåºŠã¯ã»ãšãã©åœ±é¿ããŸããã ãããŠãäžè¬çã«èšãã°ãããã€ã¯ããµãŒãã¹ã¢ããªã¹ãã®ã©ã®éšåãèšè¿°ããããç解ããã«ã¯ããããã¡ã€ãªã³ã°ãå¿ èŠã§ããæåã«æžãæããå¿ èŠããããŸãã
ãããã¡ã€ãªã³ã°ãšèšºæ
ãã¬ã³ãã³ã»ã°ã¬ãã°ãªã©ã®ããŸããŸãªã¯ãŒã«ãªããã©ãŒãã³ã¹ã®ç·ã®ããã°ãèŠããšã圌ã¯ãã®ãããªæãããå³ã衚瀺ãããã®ãããªããŒã«ã䜿çšããŠååŸã«èŠãããšãã§ãããšèšããŸãïŒ

å€ãã®äººã¯ããããã®ãã£ãŒããèŠããšããããã©ãŒãã³ã¹ã¯éåžžã«é£ããã®ã§ãããã¯ããŸããããšèšã£ãŠããŸãã å®éããã¬ã³ãã³ã®èãã¯ããã«ã€ããŠã§ã¯ãããŸããã ããã¯ãã¢ããªã±ãŒã·ã§ã³ã§äœãèµ·ãã£ãŠããããè¿ éã«è©äŸ¡ããããã®ããªãç°¡åãªæ¹æ³ããããšããäºå®ã§ãã å°ãªããšã倧èŠæš¡ãªã»ã«ã®ç解ãããã°ãã¯ããã«è¯ããªããŸãã
ãããã£ãŠãã°ãªãŒã³ãŸãŒã³ã§ã®èšºæã¯ãéåžžã«åçŽãªã¢ã€ãã¢ã«åºã¥ããŠããŸããã¢ããªã±ãŒã·ã§ã³ãèŠãã®ãæããªãã§ãã ããã ã¹ã¿ãã¯ã®ãªãœãŒã¹ã«äžè¶³ããŠãããã®ã倧èŠæš¡ã«ç解ããããšã§ããã泚æãæã䟡å€ã®ãããã®ãšããã§ãªããã®ã«ã€ããŠã®èãããã§ã«äžããŠãããŸãã å®å šãªã·ã¹ãã ãããã¡ã€ãªã³ã°ãè¡ã£ããšããŠããããã«ããã¯ã®ããå Žæã¯ãã§ã«æ確ã«ãªã£ãŠããŸãã

ãããã¡ã€ãªã³ã°
ã°ãªãŒã³ãŸãŒã³ã§ã®ç®æšã¯ãã©ãã§æéãéãããã倧ãŸãã«ç解ããããšã§ãã

ã¹ãã£ãã¯ããã³ã°ãªããåéã§ããçŽ æŽãªãããã¡ã€ã©ã§ãããã°ãªãŒã³ãŸãŒã³ã§æèçãªã¢ã¯ã·ã§ã³ãå®è¡ããã®ã«ååãªæ å ±ãæäŸããŸãã
æªã®ç®¡çè ããããã¡ã€ã©ãŒã®ã€ã³ã¹ããŒã«ãèš±å¯ããŠããªããããã¯ã·ã§ã³ãããå Žåã¯ãsshãä»ããŠjstackãå®è¡ãããtrueã®ãšãããå®è¡ã§ããŸãã jstackãå®è¡ããŸãã ç¡ç 1; å®äºããŸãããã ãããã®jstackã1,000ååéããéçŽããŸãã ããã¯ãããŒãã€ããããã¡ã€ã©ãŒã«ãªãã補åã®äœãæªãã®ããååã«ç解ã§ããŸãã
ã¹ããããŠã©ãããæã«å ¥ããŠã補åã®ãã®éšåã§æéã®80ïŒ ãã補åã®ãã®éšåã§20ïŒ ãè²»ãããŠããããšã«æè¬ããŠããŠããäœãèµ·ãããã«ã€ããŠã³ãŒããŒãããæšæž¬ãããããè¯ãã§ããã2005幎ã«Vasyaãäœæããã©ã³ãã ã«äœæãããã¯ã©ã¹ã§äœããä¿®æ£ããŸãã
ããã©ãŒãã³ã¹æž¬å®
ãããã¡ã€ãªã³ã°ã«é¢é£ãã次ã®ç²Ÿç¥çãªtrapã¯ãããã©ãŒãã³ã¹ãéåžžã«æž¬å®ããå¿ èŠããããããŸã£ãã枬å®ããå¿ èŠããªãããšã瀺ããŠããŸãã

ç§ã¯ãã€ãããã«ã€ããŠèããŠããŸãã ããããæ¹åã®ã°ãªãŒã³ãŸãŒã³ã§ã¯ãéåžžããã©ã¹ãŸãã¯ãã€ãã¹1ããã¡ãŒãã«ããç®ã§èŠãããŸãã éåžžã圌ãã¯ããããããªãã¯æªããã³ãããŒã¯ãæã£ãŠãããäœã衚瀺ãããŠããªããããã¯äžååã«æžãããŠãããããã©ãŒãã³ã¹ãæ£ãã枬å®ããå¿ èŠãããããšããæèã§èšããŸãããåæã«ãã»ãšãã©ãã¹ãŠã®ã¯ãŒã¯ããŒãã§èŠãããã¬ãŒãããããŸãã
é埳
ã¢ã©ã«ã¯éåžžã«ã·ã³ãã«ã§ããã°ãªãŒã³ãŸãŒã³ã§ã¯ãäºçŽ°ãªã¹ãã¬ã¹ãã¹ãã§ã倧ããªæ¬ é¥ã衚瀺ãããŸãã

Twitterã«å ¬éãªã³ã¯ã匵ã£ãããããŒã¿ãã¹ãã«æ¥ãŠã¢ããªã±ãŒã·ã§ã³ãå°ç¡ãã«ããããã人ã ãéãã代ããã«ãJMeterã§ã¹ãã¬ã¹ãã¹ããæžãã®ã«äœé±éãè²»ãããŠããã±ãŒã¹ãèŠãŠããŸããããããã¡ã€ã©ãŒãšäžç·ã«åº§ã£ãŠãèœã¡ãå Žæã確èªããŸãïŒã éåžžã®Apache Benchã§ãããååã«ååãªæ¬ é¥ã瀺ããŠããŸãã
éçºäžã®äž»èŠãªæ¬ é¥ã«é¢ãããããã®ããã©ãŒãã³ã¹ããŒã¿ãããæ©ãååŸããã»ã©ãè¿ éã«ä¿®æ£ã§ããŸãã ããã¯ãç¹ã«ããã©ãŒãã³ã¹äœæ¥ãèšç»ããã®ã«åœ¹ç«ã¡ãŸãã
ãµãã©ã€ãºã®äŸ
ç§ã¯æè¿ãJDK 9 Early Accessã䜿çšããŠã次ã®ããã«èããŸãããããã䜿çšããŠãããžã§ã¯ãããã«ãããããšããå¿ èŠããããŸãã

æ§ç¯äžã§ããã³ã³ãã€ã«æéã¯2åãã8åã«å¢ããŠããŸããçªç¶ã ãã®ç¶æ³ã§ã¯ããããæ¬åœã«ååž°ã§ããããšã蚌æããããã«ããã®ããã®ãã¡ããšãããã³ãããŒã¯ãæžãå¿ èŠããããŸããïŒ

ãã¡ããéããŸãã ãã«ãã«ç¹å®ã®ãã°ããããŸãããåçŸå¯èœã§ãã ãããã¡ã€ã©ãŒã§ã¯ãjavacã®æåãªå Žæã«ã€ãªããåŒã³åºãã¹ã¿ãã¯ãããããšãããããŸãã ãã®javacã§ã¯ããœãŒã¹ã³ãŒããèŠã€ãããããã«2次ã«ãŒããèŠã€ãããŸãã
次ã®ãããªå Žåã«ããããåé¡ã§ããããšã蚌æããå¿ èŠããããŸããïŒaïŒã¯ãŒã¯ããŒããæªãã bïŒããã«ç€ºããããããã¡ã€ã«ã¯ãã€ãããŸããïŒcïŒäºæ¬¡ãµã€ã¯ã«ãæªããšããçè«çèå¯ ããããããã§ååã§ãã
æé©å
å¥ã®ç²Ÿç¥çãªtrapïŒãææå°æ©ãªæé©åã¯ãã¹ãŠã®æªã®æ ¹æºã§ããã

ãã¡ãããKnutã¯ãŸã å¥åšã§ãã ãããã誰ãããã®ãã¬ãŒãºãæãåºããã³ã«åœŒãã©ã®çšåºŠããã£ãããããã¯ããããŸããããªããªãããã®ãã¬ãŒãºã¯éåžžã誀ã£ãŠèŠããããŠããããã§ãã Knutæ°ã«ãããšã99.7ïŒ ã®ã±ãŒã¹ã§ã¯ãææå°æ©ã®æé©åããã¹ãŠã®æªã®æ ¹æºã§ããã人ã ã¯æé©åãå¿ èŠãªå Žæãç解ããŠããªãããã§ãã ããªããã°ãªãŒã³ãŸãŒã³ã«ãããšããããªãã¯æ°ã«ããŸããã ãšã«ããçŸããã³ãŒããæžãçŽããŸãã æåã«æžãæããå 容ã決å®ããã«ã¯ããããã¡ã€ãªã³ã°ãå¿ èŠã§ãã
ã©ããªé話ããããŸããïŒ
ååãšããŠãããã©ãŒãã³ã¹ã®æ¹åã¯ãäž»ã«ãæªããã³ãŒãããè¯ããã«æžãæããããšã§ãã ãããããæªãããšãè¯ããã¯ãããçšåºŠäž»èŠ³çãªå³ã§ãã å°æ°ã®ããã°ã©ããŒã«å°ããŠãã ãããããªãã¯ãã®ããã«å¿ èŠãªãã®ããšãŠãçŸãããšèšãã§ãããã ãã1人ã¯ãããã«äœãæžããã®ïŒããšèšãã§ãããã ãã¡ãããããã¯ãã¹ãŠå³ããããšãã§ããŸããããEffective Javaããšããæ¬ãæžããããªããJoshua Blochã«æ©ãŸãããŠãããã®ãå«ããããªãã¯ã«æ©ãŸãããããšããããŸãã

ããšãã°ãå¹æçãªããŒã¿æ§é ã ã°ããŒãã«s / LinkedList / ArrayList / gãããããããšãªãããã©ãŒãã³ã¹ãæ¹åãããããžã§ã¯ããç¥ã£ãŠããŸãã LinkedListã®æ¹ãé«éãªå ŽåããããŸããããããã®å Žåã¯éåžžã«ç¹æ®ã§ãããéåžžã¯èçŒã§èŠãããšãã§ããŸãã
HashMapã䜿çšã§ããå Žæã§ArrayListãç·åœ¢æ€çŽ¢ããŠããããšã«çªç¶æ°ä»ãå ŽåããããŸãã 1çµã®keySetãšgetãç¹°ãè¿ããŠãentrySetã«å€æŽããããbubbleSortã埪ç°ãããŠãçªç¶100äžåã®èŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ãããã«æ¥ãŠãããã«å€ãã®æéãè²»ãããŠããããªã©ã§ãã
ã°ãªãŒã³ãŸãŒã³ã®å°èš

ãããã¡ã€ãªã³ã°ã¯ãæ¥ã ã®éçºã«å¿ èŠãªéšåã§ãã
ç§ã®èŠ³å¯ã«ãããšãããã©ãŒãã³ã¹ã®åé¡ã®95ïŒ ã¯æåã®ãããã¡ã€ãªã³ã°èšªåã§è§£æ±ºãããŠããŸãã ãããžã§ã¯ãã®è€éãã«é¢ä¿ãªããçµéšã®ãã人ã ãã©ã®ããã«ãããžã§ã¯ããéçºããŠãããããžã§ã¯ãã®æåã®ãããã£ãŒã«ã人ã ã«èŠãããšã圌ãã¯ææ ã®ç¯å²ãç¹ã«ãç§ãã¡ã¯éŠ¬é¹¿ã ããšæããŸãã ãããã®åé¡ã®90ïŒ ä»¥äžãèªæã«è§£æ±ºå¯èœã§ãããçè«çã«ã¯ãã³ãããåã«ãã£ãããããã¹ãã ã£ãããã§ãã
ãã¯ãã«ã«ãšãã¹ããŒããã¢ãŒããã¯ãããã¯ãã«ã«ãã£ã¬ã¯ã¿ãŒããŸãã¯ä»ã®äž»èŠãªæè¡çå°äœãå ããŠãããçç£æ§ãå¿ èŠãªå Žåã¯ããããžã§ã¯ãã«ãããã¡ã€ã©ãŒãèµ·åããããã®æ確ãªæ瀺ãããããšã確èªããŠãã ããã ã©ã€ããŒã1ã€ããã¿ã³ã1ã€ããŸãã¯APMãåããWebã¢ããªã±ãŒã·ã§ã³ãããå Žåã¯ãéåžžã«äŸ¿å©ã§ãã éçºè ã¯åžžã«ãããè¿ éã«è¡ãæ¹æ³ãæã£ãŠããå¿ èŠããããŸãã
ç§ã®çµéšã§ã¯ãéçºè ã®æãåãã圌ãããã幎ããšã£ãŠãã圌ããšäžç·ã«åº§ã£ãŠè£œåããããã¡ã€ãªã³ã°ããã°ãããã©ãŒãã³ã¹äœæ¥ã«å¯Ÿãã圌ã®ææã確å®ã«æ¢ããããšãã§ããŸãã å€ãã®äººã ã¯ãããã©ãŒãã³ã¹ãé£ããã»ã©ãã³ã³ããŒãã³ãéã«ããŸããŸãªçžäºæ¥ç¶ããããªã©ãé ã®äžã«ãã®ãããªãããã¯ãæã£ãŠããŸãã ãããŠã圌ãã¯ãŸã£ãããããã¡ã€ãªã³ã°ããŸãããããã¯é£ããããã§ã-ã€ãŸãããããŸã§ã®ãšãããããã¯å¿ èŠã§ã¯ãããŸããã ããããäžåºŠåº§ã£ãŠäžç·ã«ãããšã圌ãã¯ãã®ãããã¯ãåé€ããèªåã§ãããã¡ã€ã«ãéå§ããŸãã ãããŠã誰ããæ¥ãåã«è§£æ±ºã§ãããšã©ãŒã®90ïŒ ã¯ããããã£ãŒã«ãèŠããŠæ¥ãããããäºåã«ä¿®æ£ããŸãã
ããã«ããéçºè ã®æãåããŸãã-ããã¯ãäŒè°ã«1000人å容ããããšãæå³ããŠããããã§ã¯ãããŸãããã¹ããŒã«ãŒãåºãŠããŠãã¹ããŒããªå€èŠ³ã§ãããã¡ã€ã©ãŒã«äœããéã³å§ããŸãã ããã¯æ©èœããŸããã åäœãç°ãªããŸãããããžã§ã¯ãã®ç¹å®ã®éçºè ãšäžç·ã«åº§ã£ãŠãã«ããã«ã§ãããè¡ããŸãã
ã€ãšããŒãŸãŒã³
ã€ãšããŒãŸãŒã³ã¯ãããã©ãŒãã³ã¹ãšåŒãæãã«ã³ãŒããè€éã«ãªãããšãæå³ããŸããããã¯ãããã©ãŒãã³ã¹ãäžããããªãå Žåã«å®è¡ããªãããšãè¡ãå Žåã§ãã

粟ç¥çãªtrapããããŸãã
ãããã¡ã€ãªã³ã°ãšèšºæ
æåã®ã¡ã³ã¿ã«ãã©ããïŒããããã¡ã€ã©ãŒã䜿çšããŠãæé©åãéå§ããå Žæãšæ¹æ³ã確èªããŸããã

é»è²ã®ãŸãŒã³ã§ã¯ããšã©ãŒã®äŸ¡æ ŒãäžæããŠããããšãããããŸããçç£æ§ã¯åŸãããŸãããä¿å®æ§ãéçºè ã®ç¡ç ãªã©ã代ããã«äœãã倱ãããšã«ãªããŸãã ãããã£ãŠãé«åºŠãªèšºæãå¿ èŠãšããé©åãªå€æŽãè¡ãå¿ èŠãããããããã¡ã€ãªã³ã°ã¯èšºæã®äžéšã«ãããŸããã ãã³ãããŒã¯ãªã©ããããŸãã
éåžžã人ã ã¯é»è²ã®ãŸãŒã³ãæãäžããŠãäœãæé©åãã¹ãããèãå§ãããšããããã¡ã€ã©ãŒãéããŠãããèŠãïŒ

ãããŠãããã§äœãæé©åããŸããïŒ java.nioã§æžãæããããæãããããªã¡ãœããã¯java.lang.Object.waitã§ãããšèšããŸããã€ãŸãããªãŒããŒã¯ããã¯ããå¿ èŠããããŸãã ãŸãã¯ãUnsafe.parkãããããããªãŒããŒã¯ããã¯ããå¿ èŠããããŸã...ãŸãã¯SocketInputStream.socketRead0ããŸãã¯socketAccept-ãããã¯ãŒã¯ã衚瀺ãããããããã¹ãŠãç·æ¥ã«Nettyã«æžãæããå¿ èŠãããããšãæå³ããŸãã 確ãã«ããã®ãŽãã¯ãã¹ãŠJMXããã®ãã®ã§ããã3ãæã®éçºã®åŸãããã«ã€ããŠã¯åŸã§ç¢ºèªããŸãã ãŸãã¯ãObject.hashCodeããããŸã-æªãHotSpotããããæé©åããªãã£ããšããŸããããããããããã¹ãŠãéããŠè¯ããã®ã«ãªããšçŽæãã補åã¯è²¬ä»»ãè² ããŸãããã
é»è²ã®ãŸãŒã³ã®æäœæ¹æ³ã¯ç°¡åã§ããæé©åããããè¡ãçç±ã説æããå¿ èŠããããŸãã ãã¶ãããªãèªèº«ã®ããããããªãã®ãããžã§ã¯ããããŒãžã£ãŒã®ããã§ãããã
æã£ãŠããããšãæãŸããïŒ
- æé·ã®æ°å€æšå®
- ãã¹ãŠã®ãªãœãŒã¹ã䜿çšããåã«ããããçšæããããšããå§ãããŸã ã ãããŠã3ãæã®éçºãçµãã£ããšãã§ã¯ãªããããããããªãã¯ç¥ã£ãŠããŸãããã®ã¿ã¹ã¯ã«ã¯3ãæããããŸãããã¯ãŒã«ã§ããã
- ãããæãå®äŸ¡ãªæ¹æ³ã§ããããã®æ¹æ³ãå
šäœçãªããã©ãŒãã³ã¹ãæ¹åããæ¹æ³ã§ããããšãç解ããå¿
èŠããããŸãã
ã¢ã ããŒã«ã®æ³å
çç£æ§ãè©äŸ¡ããããã«ã¿ã¹ã¯ãäŸé Œãããšãçµéšã®æµ ã人ãã²ã©ããã¡ããã«ãªããŸãããªããªããé ã®äžã«éç·åœ¢ã®äŸåé¢ä¿ã眮ãã®ã¯éåžžã«é£ããããã§ãã ãããã®éç·åœ¢äŸåé¢ä¿ã®1ã€ã¯ã¢ã ããŒã«ã®æ³åã§ãããéåžžã¯æ¬¡ã®ããã«ãªããŸãã
ã¢ããªã±ãŒã·ã§ã³ããããšããŸãã AãšBã®2ã€ã®ç¬ç«ããéšåããããŸããããšãã°ãAéšåã¯70ïŒ ã®æéã§2åå éããBéšåã¯30ïŒ ã®æéã§6åå éããŸãã åæ£ã§ããã®ã¯ãã®ãã¡ã®1ã€ã ãã§ããããã«ã¯ååãªãªãœãŒã¹ãããããŸããã ã©ã®ã·ã¹ãã ããªãŒããŒã¯ããã¯ããŸããïŒ åã«ã°ã©ãã£ã«ã«ã«åæžããŠãã次ã®ããšãããããŸãã

ããŒãAã¯ãåèšæéã®70ïŒ ã§æ©èœããŸãã ããŒãAã2åã ãå éãããšããäºå®ã«ãããããããããŒãAãæé©åããããšããå§ãããŸãã å šäœçãªããã©ãŒãã³ã¹ãžã®åœ±é¿ã倧ãããªããŸãã
ããç§ãããªãŒã©ã³ã¹ã®ããã°ã©ããŒãªããããããããŒãBã6åãªãŒããŒã¯ããã¯ããã§ãããã ç§ã®é±å ±ã§ã¯ããã®æ°åã¯ãã£ãšè¯ãèŠããã ããïŒãVasyaã¯2åã«ãªããç§ã¯2åã«ãªã£ãã®ã§ã絊æã3åå¢ããå¿ èŠããããã
ã¢ã ããŒã«ã®æ³åã¯æ¬¡ã®ããã«æšæž¬ãããŸãã

ã¹ããŒãã¢ããSãããå Žåãå®çŸ©ã«ãããåèšæéA + Bãæ°ããæéã§å²ã£ãå€ã«ãªããŸãã ããŒãBã¯åããŸãŸã§ãããããããã©ã¹BãããããããŒãAã¯S Aåæžå°ããŸããã ãã®ä»é²ã§ããŒãAãšããŒãBã®çžå¯Ÿæéã瀺ãããŒãAãšããŒãBã® 2ã€ã®è¡šèšæ³ãå°å ¥ãããšã次ã®åŒã«ãªããŸãã

ãã®æ¯çã«ã¯æ¥œããç¹æ§ããããŸãã ããšãã°ãS Aãç¡éã«åããå Žåãå¶éSïŒ

ããã¯æãããªããšã§ã¯ãªããç解ããããã«èªåã®èã§äœåºŠãæããå¿ èŠããããŸãã 圌ãã¯ããã§ãã®ãããªã°ã©ããéããŠããªãã瀺ããŸãïŒ

...ãããŠèšãïŒå éããéšåã80ïŒ ãå æããã¢ããªã±ãŒã·ã§ã³ãããå Žåããã®ãã€ã³ããŸã§å éããŸãããã¹ããŒãã¢ããã5åãè¶ ããå Žåãããã¯åŸãããŸããã
ããã¯ãããŒã¿ããŒã¹ãã³ããŒãããªãã«æ¥ãŠã次ã®ããã«èšã£ãŠããããšãæå³ããŸããããŒã¿ããŒã¹ãã¯ãŒã¯ããŒãã®50ïŒ ãå æããŠããããšãããããŸãã 1è¡ã®ã³ãŒããå€æŽããã«çŸåšã®ãœãªã¥ãŒã·ã§ã³ãåœç€Ÿã®ãã®ã«å€æŽãããšãããã©ãŒãã³ã¹ã10åã«ãªãããšãä¿èšŒããŸãã 圌ã«äœãšèšããªããã°ãªããªãã®ã§ããïŒ ïŒèŠ³å®¢ããïŒãã«ããããšïŒ
ããã«é²ãã§ãã ããïŒã¢ã ãã«ã®æ³åã®äžè¬åããããŸãã ãããã®çšèªãå°ãã²ã£ããè¿ããŠã2ã€ã®æ°ããè¡šèšæ³ãå°å ¥ãããšãpã¯é«éåãããAã¯Aã®ç¹å®ã®éšåãåæ£ãããæéã§ãããalphaã¯ä»ã®ãã¹ãŠã®éšåã®éã§ãããã®æ³åã¯æ¬¡ã®åœ¢åŒã§èšè¿°ã§ããŸãã

åé¡ã¯ããããã®ã¡ã³ããŒã«äœããã®ç©ççæå³ããããšããããšã§ãã éåžžãæåã®ã¡ã³ããŒã¯äžŠè¡æ§ãšåŒã°ããŸã ã ä»ã®ãšããã2çªç®ã®çšèª-競å-ãç¡èŠãããšãè¡šçŸã¯æ¬¡ã®ããšãæå³ããŸãïŒããŒãAãäœåå éããããäžè¬çãªã¹ããŒãã¢ãããã©ãã ãåŸããã 競åã¯ãã¢ã ãã«ã®æ³åã§ãããšåã挞è¿ç·ãæäŸããä»ã®ãã¹ãŠã®çç£æ§ãžã®åœ±é¿ã説æããŠããŸãã ãšããã§ããã®é¢æ°ã®ã°ã©ããæããšãã¢ã ãã«ã®æ³åãšåãæ²ç·ãåŸãããŸãïŒ

ãã ããååãšããŠãã»ãšãã©ã®å Žåããã®åœ¢åŒã®ã¢ã ããŒã«ã®æ³åŸã¯é©çšãããŸããã ã³ããŒã¬ã³ã¹ãšåŒã°ãããã³ã³ããŒãã³ãéã®çžäºäœçšãèšè¿°ããå¥ã®ã¡ã³ããŒãããã«è¿œå ããããšãããè€éãªæ³åãé©çšãããŸãã

ã¢ã«ãã¡ãšããŒã¿ãè² ã§ãªãå Žåã飜å挞è¿ç·ããªãããšãããããŸãã äœããã®å¹çã®ããŒã¯ãããããã®åŸãçç£æ§ãäœäžãå§ããŸãã ããã©ãŒãã³ã¹ã«é¢ããå€ãã®äººã ã¯ããã®æ³åããŠãããŒãµã«ã¹ã±ãŒã©ããªãã£æ³ïŒUSLïŒãšããŠå®åŒåãããŸã§ãèªåã®èã§æããŠããŸããã

ããã§ã¯ããæ®éçãããã³ãæ³åãã®æŠå¿µãèªç¶ç§åŠçãªæå³ã§äœ¿çšãããŠããŸããã€ãŸããçè«çã«æ£åœåãããŠããŸãããåæçã«ã¯å°ãåºãããŠããŸããã ããã¯ãçµéšç蚌æ ã«ãŸã§åã¶æ³åŸãšããŠæšå®ãããŸãã
ã¢ã«ãã¡ãšããŒã¿ããŒãã«çããã·ã¹ãã ã¯ãããŸãããã·ã¹ãã ã«ãªãœãŒã¹ãè¿œå ããããäœããæé©åãããããå Žåãå€ããæªåããããã§ãã ããšãã°ãããããã«ããã¯ãåãé€ããããå¥ã®éãããã«ããã¯ã«ã¶ã€ãããŸããã
ããã©ãŒãã³ã¹æž¬å®
ããã©ãŒãã³ã¹ã枬å®ããã¡ã³ã¿ã«ãã©ããã«ã¯ãããã¹ãŠãè€éã§ããããã¹ãŠãããã©ãŒãã³ã¹ã«äžãã圱é¿ãããããªããããäœããèŠã€ããŠãã³ãããŒã¯ã瀺ãããšã確èªããã ãã§ãããšãããŸãã

å®éãããã©ãŒãã³ã¹ãã¹ãã¯éåžžã«é«äŸ¡ã§ãããç¹ã«ãã¹ãŠããã¹ãããããšã¯ã§ããŸããã ããã©ãŒãã³ã¹ãã¹ãã¯ãæ©èœãã¹ãïŒãŠããããã¹ããªã©ïŒãããã¯ã§å®è¡ãããå Žåã§ãã100ããªç§ä»¥äžã§åæ Œãããšããç¹ã§æ©èœãã¹ããšç°ãªããŸãã ããã©ãŒãã³ã¹ãã¹ãã§ã¯ãç©äºã¯ããã»ã©ã¹ã ãŒãºã§ã¯ãããŸããã 1å以äžãããã¹ãã«åæ Œããæ°æéãããå ŽåããããŸãã ããã¯ã1ã€ã®å€æŽãæ°çŸæéã®ãã·ã³ã§ãã¹ãã§ããããšãæå³ããŸãã 1æ¥ã«å€§éã®ã³ããããè¡ãå Žåããã¹ãã·ã¹ãã ãä»ããŠäœããã®æ¹æ³ã§ã¢ã¯ã»ã¹ãæäŸããã«ã¯ãéåžžã«å€ãã®æ©åšãå¿ èŠã§ãã
ããã©ãŒãã³ã¹ãã¹ãã«ã¯éé¢ãå¿ èŠã§ãã
ååãšããŠãããã©ãŒãã³ã¹ãã¹ãã¯éãã€ããªã¡ããªãã¯ãæäŸããŸãã éåžžãæ©èœãã¹ãã¯ãPASSããŸãã¯ãFAILããã€ãŸããã€ããªã¡ããªãã¯ã瀺ããããã©ãŒãã³ã¹ãã¹ãã¯...ã67ãã瀺ããŸãã ããã«æªãããšã«ã¯ã圌ãã¯67ã§ã¯ãªãã67ãã©ã¹ãã€ãã¹5ãšèšããŸãã ããã¯ããšãããããã¹ããšã©ãŒã¯ããŒã¿ã解æããåŸã«ã®ã¿æ€åºãããããšãæå³ããŸãããã¹ãŠãã©ãã§ãéåžžã«çŸããããšãç解ããŠãããšãã§ãããããã§ã¯ãæãé ã«ãå®éšãçŠããŠããããšã瀺ãããŒã¿ããããŸãã , .
, - , - â - , . , , , , , .
â . , , , .
: .

, «», , , end-to-end , , -. .
â , , .
, , â .
: â , â . () , . , â . , â real world . , , «real world». , . , , . «real-world», , , , .
â . , , . , , , , , . , , , . , , , , white paper- , , .. .
bull shit , , .

â , , .., «» , , . , . .

, , bottleneck, . , , . .
. .

â , . 0, speedup . ( , , 2 ), , , , .

, , .
:

speedup , â speedup . , - , , , , .
, â . .

. - 50 , , 50 , . , , , , , , , â . , , , .
:
:
- , ;
- , ;
- .
ããªãã¡ â .
:
- , , , : , , - ;
- ;
- , .
, , , ( ), . , .
, . , « - » , . , , , , , , â , , . , .
æé©å
, , . :

« , â 100 , a 110. , âŠÂ» - JPoint. , , , , - . , branch prediction - (, , -, ).
, , , . , . , ( , , ):
- , , â N^3, N log N. , , , , , ;
- , , , , , , . , PR , ;
- . , , , -;
- , . , , .
, , , - , , . , , , ..
JVM
: , , , JVM, ? : , ( , JVM).
, , . Google : «JVM tuning options». :

, - , « JVM».
, . , , , . , , , .
, , parallelStream(), Eexecutor.submit, new Thread, . ? , , , - .
: , , . â , dispatching . staging, , . , , - , - -Hadoop, MapReduce; , . , , 10 000 , .. â , .
å¥ã®äŸã : « , - Integer Java â , int ».
, «int- â » , , , . , , : , , ( , - , , , ), JDK - Valhalla.
Modus operandi: â , , , . .
50% , . : , , « » .
, 80% ( 83% , , ).
. , , , , , , . . , , , , , . , .
: , . â , , . , .

, , - , , : « »!
â .

äŸïŒ
- , , , , - . : reflection ;
- ãŸãã¯ãã©ã€ãã©ãªã®ã³ãŒã¹ãèªãã§ããããªãã¯ã¡ãœãããç¹å¥ãªé åºïŒãã®APIéŒæ²»çãšåŒã³ãŸãïŒã§ãã«ãããšããã®ãªããžã§ã¯ããããåãå
¥ããããç¶æ
ã«å€æããããšãããããŸãã
- ãŸãã¯ããã©ã€ããŒãAPIããã¹ãŠããŠã³ããŒãããŠããŠã³ããŒãããŸãã
- ãŸãã¯ãå®è¡ããŠããç¹å®ã®ããŒããŠã§ã¢ã®æ©èœãã€ãŸãã¿ãŒã²ãããšããç¹å®ã®JDKã®æ©èœã掻çšãå§ããŸãã äœã¬ãã«ã®æé©åãè¡ããŸãã
ãããã¡ã€ãªã³ã°ãšèšºæ
éåžžã誰ããå¶ç¶ãã®ãŸãŒã³ã«è¡ãçããŸãã å¯èœãªãã¹ãŠã®ãªãã·ã§ã³ãéžæããããšã圌ãã¯èªåèªèº«ã«èšããŸãïŒãããã§ã¯ã次ã«äœããã¹ãããèããŸããã ãããŠãããªããé·ãéãããã¡ã€ã«ãèŠããšãããªãã¯è§£æ±ºçãèŠãããšãã§ããããã§ãã 圌ãã¯æ±ºå®ãé£ããããšãç解ããŠããŸããã€ãŸããèŠãã®ã«é·ãæéããããããšãæå³ããŸãã

å®éãã¬ãããŸãŒã³ããããã³ã°ããèœåã¯ãå¯åéšåã®çžäºäœçšãç解ããããšããçãŸããŸãã ãããŠããã®å Žæã«ã¯ããã©ãŒãã³ã¹ã¢ãŒãã£ã¹ããç»å ŽããŸãããããã¯ç¹ã«ä»ã®ãã¹ãŠã«å°å¿µããŠããããã§ã¯ãããŸããããäžåºŠã«ãã¹ãŠã®ã¬ã€ã€ãŒãæãäžããããšãã§ããŸãã 圌ãã¯æ©è¡çŸç§äºå žã§ãããé ã®äžã«ã¯ãã®ãããªç¶æ³ã§åãããã¯ã®ã»ããããããŸãã 圌ãã¯é©çšã®éçãç¥ã£ãŠããŸãã æãéèŠãªã®ã¯ããããã®äººã ã¯ãèŠæ £ããªããããããèŠãŠãwhenç¶ãšããªããããããå匷ãå§ãã人ã ã§ãã
äœãæ確ã§ãªããããã¡ã€ã«ã衚瀺ãããå Žåããã§ã¯ããã®ãããã¡ã€ã«ãåé€ããŠãæ°ããããŒã¿ãããããå®éšãããŸãããããšèšããŸãã ããŒã¿ãåéããäœç³»çãªåž°çŽçæ¹æ³ãããã§æ©èœããŸãã 圌ãã®ããã«å匷ãããšããããšã¯ãã³ãŒããããŠã³ããŒãããŠStackOverflowã«æçš¿ããããã®ãããªããã©ãŒãã³ã¹ã®åé¡ã¯ãããŸããïŒããšå°ããã®ã§ã¯ãªããJohn Skeetãªã©ã®äººã ãæ¥ãã®ãåŸ ã¡ãŸãã圌ãã¯ããã§ã©ã®ããã«ãäœãããå¿ èŠãããããæããŠãããŸãã å匷ãšã¯ãããã¥ã¡ã³ããèªãã ããèšäºå ã®åèæç®ãæ¢ããããå®éšãããããååããç¥èãåŒãåºããããäœããã®æ¹æ³ã§æŽçãããããããšã§ãã å€ãã®äººã ããã®ããã«äŒè°ã«æ¥ãŸãã
äŒè°ã®ã³ã
å¥ã®ã¡ã³ã¿ã«ãã©ããããããŸãïŒãé·ãéäŒè°ã«è¡ã£ãå Žåããã€ãããã€ãã®äŒè°ã§åœŒãã¯ç§ãã¡ã®ãããžã§ã¯ãã5åæ¹åããããªãã¯ãäŒãããã®åŸãã±ããã«è²»ãããäºç®å šäœãåãæ»ããŸããã

å®éãç¹å®ã®ã±ãŒã¹ã§ã¯ã1000åã®ä¿åã®ãã¡1ã€ã®äœã¬ãã«ã®ããªãã¯ã§ãã 海蟺ã§å€©æ°ãåŸ ã€ãããèªåã§èŠã€ããæ¹ãç°¡åã§ãã ããã°ã©ãã³ã°ããŒãã£ãŒã§æãé¢çœãã®ã¯ãããã©ãŒãã³ã¹ã«é¢ããè°è«ã®ã»ãšãã©ãäœã¬ãã«ã®ãããã³ã°ã«é¢ãããã®ã ãšããããšã§ãã

ååãšããŠãããããã¹ãŠã®ããšã¯ããããžã§ã¯ãã®ããã°ã©ããŒãåçŽãªã¢ã«ãŽãªãºã å€æã䜿çšããŠãããã©ãŒãã³ã¹ãäœåãæ¹åã§ããç¶æ³ã§çºçããŸãã ãããã圌ãã¯äŒè°ã§ã¹ããŒãHotSpotãäœããã®åœ¢ã§ã³ã³ãã€ã«ããããšèšãããã®ã§ãHotSpotã§ããŸãã³ã³ãã€ã«ãããããã«ãããžã§ã¯ããä¿®æ£ããå¿ èŠãããã®ã§ã圌ãã¯äž»ãªãã®ãèŠéããŠããŸã-圌ãã¯å®éã«èªåã§èŠã€ããããšãã§ããå€æŽãæã£ãŠããŸãé«éã§ãïŒãããã©ãŒãã³ã¹ãåäžããŸãã
æŸèæ
ã¬ãããŸãŒã³ã«ããŠããã®çš®ã®äœã¬ãã«ã®éããèŠã€ããå Žåãå®éã«ã¯ã»ãšãã©ã®å Žåããªããã£ãã€ã¶ãŒã®å®è£ ã®éãã§ãïŒäžèšã®ã±ãŒã¹ã®å€ãã¯å®éã«åãããã«æ©èœããã¯ãã§ãïŒã ãã ãããããã³ã°ã¯äžæçãªãããã§ããããããžã§ã¯ãã®åºç€ã§ã¯ãããŸããã

ååãšããŠããããã¯äžã®ã¬ã€ã€ãŒã®åé¡ã瀺ããŸããäžã®ã¬ã€ã€ãŒã¯å®éã«ã¯ããå¥å šãªããã©ãŒãã³ã¹ã¢ãã«ãæäŸããå¿ èŠãããããã§ãã ããŸããŸãªäœã¬ãã«ã®ã²ãŒã ã«ã€ããŠå ±åãããã¬ããŒããèããå Žåãå³æã®ã¢ã¯ã·ã§ã³ã®ã¬ã€ããšããŠåãåããªãã§ãã ããã ãã®ã¬ããŒãã¯ãéåžžã«ã¿ã€ãã«ãªã£ãå Žåã«ãã€ãå¿ èŠã«ãªãå¯èœæ§ã®ãããããã³ã°ã®ã³ãŒãã¹ãæ§ç¯ããã®ã«åœ¹ç«ã¡ãŸãã
äŸ
JDK 9ã§æè¿èŠã€ãã£ãéåžžã«ç°¡åãªäŸããããŸãã

Javaã«ã¯ArrayListåããããå éšã¯ã©ã¹Itrãä»ããŠå®è£ ãããå埩åããããŸãã ãã®Itrã¯ã©ã¹ã¯ãã©ã€ããŒããªã®ã§ãItrã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºãããšãã§ããããã«ãåæã®ããããbridgeã¡ãœããïŒãããªãã¯ïŒããããŸãã åé¡ã¯ãItrãåŒã³åºããšããã®ã¡ãœããã®ã·ã°ããã£ã«ãŸã ããŒããããŠããªãã¯ã©ã¹ã衚瀺ãããããããããã¹ãããã€ã³ã¬ã€ã€ãŒãç Žæããããšã§ãã
ãã®ãšã©ãŒã¯ã©ãã«ãããŸããïŒæé©åäžïŒïŒ ããã¯ArrayListã³ãŒãã®ãšã©ãŒã§ããïŒ ãããããããã ããã¯javacã³ãŒãã®ãã°ã§ããïŒ ã¯ããããã§ãã ãããã¹ãããã³ãŒãã§ã®æé©åãäžååã§ããïŒ ããããã¯ãã ããããã³ã³ãã€ã©ãŒãæ°ã¥ããã³ã³ãã€ã©ãŒã§ãããä¿®æ£ããæ¹æ³ãç解ãããŸã§ãArrayListã«çŽæ¥å ¥ããæ¹ãç°¡åã§ãã

ãããã£ãŠãåŒæ°ã®ãªããã®ãããªã³ã³ã¹ãã©ã¯ã¿ãŒãããã«äœæããããã°ãžã®ãªã³ã¯ãããã«æžã蟌ãŸãããã®ã³ã³ã¹ãã©ã¯ã¿ãŒãäœæãããçç±ãªã©ã瀺ãããŸãã
èšæ£
ã¬ãããŸãŒã³ãé·æéæãäžãããšãéåžžã人ã ãããªãã®ãšããã«æ¥ãŠãããã«é£ã³èŸŒãããšãããšããã¹ãŠãèªåãå·ã€ããŸãããšèšããŸãã ã¡ã³ã¿ã«ãã©ããã¯éåžžã«åçŽã§ãã圌ãã¯ãããã¯ãããã«åãã°çŽ æŽããããšæããŸãã

ç·Žç¿ã§ã¯ãã¬ãããŸãŒã³ã§ã¯ãå·ããçºçããªãããšã瀺ãããŠããŸãã
äŸãšããŠïŒç§ã¯åœŒãåžžã«èŠãŠããŸãïŒïŒ

JDKã§ããã©ãŒãã³ã¹ã®åé¡ãèŠã€ãããŸããã JDKã§ä¿®æ£ãã代ããã«ã次ã®ããã«èšããŸããã Unsafeãä»ããŠãããã³ã°ããŸããã ãããŠãUnsafeããªããªã£ãŠãããsetAccessibleïŒïŒã§ããæ©èœããŠããªãããšãããããŸããã ãããã£ãŠãã ãŸãããŠã¯ãããŸããã ã¬ãããŸãŒã³ã§äœæ¥ããå Žåãæè¡çè² åµãè² æ ããŸãã

ããã¯ãäœã®ããã«è¡ãããã®ããã©ã®ãããªæ¡ä»¶äžã§ãããé©çšãããã®ããããããã¯ãå¿ èŠã§ãªãããšã確èªããæ¹æ³ãããªããåŸ ã£ãŠããã¢ããã¹ããªãŒã ã®ãã°ãªã©ãåžžã«ææžåããŸãã
ç§ã¯åŠæ ¡ã§ã®åŠæ ¡ç掻ã®ææ¥ã§æ¢è¡åž¯ãäœãããã«æããããŸããã ç§ã¯ä»ã§ããè¡ã®éã®è²ã«å¿ããŠããã®æ¢è¡åž¯ãå·ã®äžãŸãã¯äžã«é©çšãããšãããã®æ瀺ãæãåºããŸãã ããããç§ã¯åœä»€ã®å¥ã®æ®µèœã®ããã«æãåºããŸãïŒããªãã®åå¿ã®èº«äœã«æ¢è¡åž¯ã眮ããåŸãããªãã¯ããã«ã¿ã€ã ã¹ã¿ã³ãä»ãã®ã¡ã¢ã眮ãã¹ãã§ãã
ã³ãŒãã«ãã®ãããªããã¯ãäœæãããã³ã«ãç¹å®ã®ã¹ããŒãªãŒãé ã®äžã«ãããŸããã³ãŒãã®ã²ã©ãç®æã«æ¢è¡åž¯ã眮ããããã«äœããã®çç±ã§ãããè¡ãããããšãæžãå¿ èŠããããŸãããã°ãããã³ãã®ããŒãã¹ã¯ããã®ãããªæ¡ä»¶ãæºããããå Žåã«ã®ã¿åé€ã§ããŸãã ããã«ãããç§ãŸãã¯ä»ã®ååããã®ã³ãŒããçºèŠãããšãã«ãããã«åãåã䟡å€ããããã©ãããç解ããæ©äŒãåŸãããŸãããŸãã¯ãæ¢è¡åž¯ãåé€ãããšããããžã§ã¯ãã®æ®ãã®éšåïŒãŸãã¯ä»²éïŒã殺ãããŸãã
ã¬ãããŸãŒã³ã®å°èš
ãããã³ã°ãçŠæ¢ããŸããã ããã«ã€ããŠèŠåããã®ã¯æããªããšã§ãããšã«ããããããè¡ãã§ãããã ãã ãããããžã§ã¯ãã§ãããã³ã°ã®æ°ãšå¯åºŠãç¶æããããšã¯ããã®åç¶ã«å¿ èŠãªæ¡ä»¶ã§ãã
ã¢ããã¹ããªãŒã ãšé£æºããæ©èœïŒããšãã°ãäžèšã®ãªããžããªã«å€æŽãã³ãããããŠãªãŒãã³ãœãŒã¹ã«åãçµãã§ããå ŽåïŒã¯ãé·æçãªéåœã倧ãã«ä¿é²ããŸãã ããããé©çšããå éšè£œåãã¢ããã¹ããªãŒã ããåå²ããã»ã©ãããããµããŒãããã®ã«è²»çšãããããŸãã
ãããã®ãã¹ãŠã®å±€ãç解ããèœåã¯ããç«ã§ãæ£åžžã«èšç·ŽãããŸãããããããããããçš®é¡ã®éèŠãªå€æŽãå®è¡ã§ããã¹ããŒãžã³ã°ç°å¢ãå¿ èŠã§ãã
å¥ãã®èšè
ããããããã§ç§ãã¡ã¯çéå ¥ãã®äŒè°ã§ãã ãã®ãã¹ãŠã®å¯ã§äœãããããïŒ
çéå ¥ãã®äŒè°ã«åå ããŠããŠã補åã®ãŠãŒã¶ãŒã§ããå Žåãçç£æ§ã«æºãã人ãšããŠã®ç§ã®èŠ³ç¹ããã¯ã次ã®ããšãè¡ãå¿ èŠããããŸãã
- ã¬ãããŸãŒã³ããã®ãããã³ã°ã®é©çšå¯èœåšåº«ãæŽæ°ããŸãã ãããã¯ã·ã§ã³ã«å®è£
ãã¹ãã¬ãããŸãŒã³ããã®ãããã³ã°ãããã«æžãå§ããå¿
èŠã¯ãããŸãããããã®èŸæžãæŽæ°ããã ãã§ãã
- å
±ç¯è
ãèŠã€ããé»è²ã§äœæ¥ããããã®ã¢ãããŒãã«ã€ããŠè©±ãåããŸãã ããæ£ç¢ºã«ãããã¡ã€ã«ããã³ç£èŠããæ¹æ³ãªã©ã«ã€ããŠã
- ãŸãã¯ãã€ãšããŒãŸãŒã³ããã°ãªãŒã³ãŸãŒã³ã«åŒãç¶ãããããªãã¯ãã€ãŸã çç£æ§ã®ããã«è€éãã亀æããããã«äœ¿çšããŠãããšæãããŠãããã®ã¯ãçŸåšã§ã¯åãªãæšæºçãªã³ãŒãèšè¿°ã®ç·Žç¿ã§ãã
補åéçºè ã®å ŽåïŒ
- ãŠãŒã¶ãŒãã€ãšããŒãŸãŒã³ã§äœæ¥ããããã®ã¢ãããŒãã«ã€ããŠè°è«ããã®ã«åœ¹ç«ã¡ãŸã-ãããã¡ã€ã«æ¹æ³ãç£èŠæ¹æ³ãªã©ã
- ãããŠã人ã
ã絶ããééããã¬ãããŸãŒã³ããã®ããã¯ããã€ãšããŒãŸãŒã³ãŸãã¯ã°ãªãŒã³ãŸãŒã³ã®ããããã«ãã©ãã°ãã䟡å€ãããããç解ããŸãã
äž»ãªããã©ãŒãã³ã¹äœæ¥ã¯ã°ãªãŒã³ãŸãŒã³ã§è¡ãããããšã«æ³šæããŠãã ããã ãããžã§ã¯ãã®çç£æ§ãé«ãããã³ã«ããŸãç°¡åãªããšãèŠãŠãã ããã ææ°æ§èœãåäžããŸãã ããã¯éå±ãªã®ã§ã誰ãäŒè°ã§ãããã«ã€ããŠè©±ãããšã¯ãããŸããã 圌ãã¯éåžžãé»è²ãŸãã¯èµ€è²ã®ãŸãŒã³ã«ã€ããŠããªãã«è©±ããŸãã 誰ããLinkedListãArrayListã«è±éçã«äº€æããæ¹æ³ã«ã€ããŠãéåžžã¯èª°ã話ããªãã§ãããã
Joker 2017ã§ã¯ãAleksey ShipilevããShenandoahïŒå¯èœæ§ã®ããã¬ããŒãžã³ã¬ã¯ã¿ãŒïŒããŒã2ïŒããšããæ°ããã¬ããŒããæäŸããShenandoahã®ãããªäœéGCãçŽé¢ããªããã°ãªããªãåé¡ãšãJVMã¬ãã«ã§äœãã§ãããã«ã€ããŠè©±ããŸãã äŒè°ã¯ãµã³ã¯ãããã«ãã«ã¯ã§11æ3æ¥ãš4æ¥ã«éå¬ãããŸãã ããã°ã©ã ãšä»ã®ã¬ããŒãã®çºè¡šã¯ã€ãã³ãã®å ¬åŒãŠã§ããµã€ãã«ãããŸã ã