Joker 2016ãèŠè¶ããŠãèªè ã®éã§ææ ã®åµãå·»ãèµ·ãããJava Performanceã«é¢ããæçš¿ãå ¬ââéããŸããã ãã¡ã³ã«çæãæå ¥ããããã§ãäœããã®çµ±äžããããœãªã¥ãŒã·ã§ã³ã«å°éããããšããããã«ãããŸããŸãªããã£ã³ããããå°é家ãéããããšã«ããŸããã
- ããããªãŒã»ãã¹ãã«ã㯠ã .NETãC ++ãéçºããŒã«ã®å°é家ãæè¡ãšæ°åŠã®ã³ãŒã¹ã®èè ã éå ã
- ã¢ã³ãã¬ã€ã»ãã³ã®ã³ Odnoklassnikiã®ãªãŒãã£ã³ã°ããã°ã©ãã§ãè² è·ã®é«ãããã¯ãšã³ããå°éãšããŠããŸãã 圌ã¯ãæ°å¹ŽåããSun MicrosystemsãšOracleã§HotSpotä»®æ³ãã·ã³ãéçºããŠä»¥æ¥ãJVMãç¥ã£ãŠããŸãã 圌ã¯ã¢ã»ã³ãã©ãŒãšäœã¬ãã«ã®ã·ã¹ãã ããã°ã©ãã³ã°ã奜ãã§ãã
- ãŠã©ãžããŒã«ã»ã·ããã³ã 10幎ã«ããããéä¿¡äºæ¥è ããããã¯ãŒã¯ããã³ãããã¯ãŒã¯æ©åšã®ç®¡çããã»ã¹ãèªååããããã«äœ¿çšãããœãããŠã§ã¢ã§ããNetCracker OSSã®ããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ã«åãçµãã§ããŸãã 圌ã¯ãJavaããã³OracleããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ã®åé¡ã«èå³ããããŸãã
- ãªã¬ã°ã»ã¯ã©ã¹ãã ã SEMrushããã³Adept ANSI Cã®CTO
ã¢ã³ãã¬ã€ã»ãã³ã®ã³
-JavaãšC ++ãä»æã人æ°ã®ããèšèªã¯äœã ãšæããŸããïŒ äž¡æ¹ãšã倧人ã§ããã誰ãããæçããŠæŽç·ŽãããŠããŸããïŒ
-ãŸã第äžã«ãç§ã¯ãããã®èšèªéã«ç«¶äºããããšã¯æããªãã ããããã«ç¬èªã®ãããããããå®å šã«å ±åããŸãã åŸæ¥ãJavaã®äººæ°ã¯ãããã«é«ããªã£ãŠããŸãã Javaãã©ãããã©ãŒã ã¯ãã¢ããªã±ãŒã·ã§ã³ããããã°ããã³ä¿å®ããããã®åŒ·åãªããŒã«ã«æ¹ãããŸãã ãã ããC ++ã®éèŠæ§ãé倧è©äŸ¡ããããšã¯å°é£ã§ãã çŽ æŽãããæŽå²ãæã€èšèªã§ããã«ãããããããçŸåšãç©æ¥µçã«éçºãç¶ããŠããŸããC++ 14æšæºãå€ãã®æ°ããèå³æ·±ãæ©èœãåããC ++ 11ã«æ £ããã®ã¯éçºè ã ãã§ããã
-è² è·ã®é«ããµãŒããŒã®äžçã§ã©ã®èšèªã䜿çšã§ããŸããïŒ ç°ãªãèšèªã§åå¥ã®ã·ã¹ãã ã¢ãžã¥ãŒã«ãéçºããç¹å®ã®ã¿ã¹ã¯çšã«ãããã匷åããããšã¯çã«ããªã£ãŠããŸããïŒ å¯èœã§ããã°ïŒåžæããŸããããããšãæ©äŒããããŸããïŒãC ++ã䜿çšããŠåé¡ã解決ããŸããããããšã1ã€ã®èšèªã®ã¿ã§ãã¹ãŠãè¡ããŸããïŒ
-è² è·ã®é«ããµãŒããŒã§ã¯ã誰ããç°ãªãããšãç解ããŠããŸãã 1ç§éã«äœåãã®ãããã¯ãŒã¯ãªã¯ãšã¹ããçºçãããã®ãããã°ã倧éã®ããŒã¿ã䞊ååŠçãããã®ããããŸãã ããŸããŸãªããŒã«ãããŸããŸãªã¿ã¹ã¯ã«é©ããŠããŸãã Odnoklassnikiã«ã¯ãç¹ã«ç»åããã³ãããªåŠçã«é¢é£ããC ++ã§èšè¿°ãããã¢ãžã¥ãŒã«ããããŸããSIMDèšç®ãšããã»ããµã®æãå¹ççãªäœ¿çšãå¿ èŠã§ãã ãã ããã»ãšãã©ã®ã·ã¹ãã ã§ã¯Javaã§ååã§ãã ããã«ã以åã«Cã§éçºãããJNIãä»ããŠåŒã³åºãããã³ãŒããã©ã°ã¡ã³ãã¯ãJavaã§åŸã ã«æžãçŽãããŸããããã®çµæãäžèŠãªã³ããŒãšJNIã®ãªãŒããŒãããããªããããããããã©ãŒãã³ã¹ãåäžããŸããã
-Javaã§Unsafeã䜿çšããããšã¯æ£åœåãããŸããïŒ ãªãC ++ã䜿çšããªãã®ã§ããïŒ
-ãªãUnsafeã䜿çšãããã«ã€ããŠã®å šäœçãªã¬ããŒãããããŸãã ç¹ã«ãªãããŒãã§ã®äœæ¥ããã€ãã£ãã³ãŒããšã®ããåããªã©ãUnsafeãªãã§ã¯ã§ããªãå€ãã®ã·ããªãªããããŸãã
ã¢ããªã±ãŒã·ã§ã³å šäœãC ++ã§èšè¿°ãããå Žåãçµ±èšã®åéãç£èŠããµãŒããŒéã®éä¿¡ãªã©ã®ããã«ããã¹ãŠã®äžè¬çãªãã¬ãŒã ã¯ãŒã¯ãšãããã³ã«ãåå®è£ ããå¿ èŠããããŸãã ãããã¯äœã¬ãã«ã®æäœãæ åœããŸãããæ®ãã®éçºã¯éåžžã®Javaã§è¡ããã·ã³ãã«ã§ç解å¯èœãªã³ãŒããèšè¿°ããããã®æè¯ã®ãã¿ãŒã³ãå³å®ããŸãã ãšã³ã·ã¹ãã å šäœãåäžã®ãã©ãããã©ãŒã ã§éçºãããŠããå Žåã¯ãã¯ããã«äŸ¿å©ã§ãã
-ãšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ãšå¯èœãªãœãªã¥ãŒã·ã§ã³ãéçºããéã®æãäžè¬çãªããã©ãŒãã³ã¹ã®åé¡ã¯äœã§ããïŒ
-ãŸãã«ãJavaãã©ãããã©ãŒã èªäœã®ããã©ãŒãã³ã¹ã«äŸåããå Žåã éåžžãåé¡ã解決ããã«ã¯ãã¢ã«ãŽãªãºã ã眮ãæããããã¹ã±ãŒãªã³ã°ãã€ãŸãéãç©ã¿äžããŸãã æãäžè¬çãªããã«ããã¯ã¯ããããã¯ãŒã¯åž¯åå¹ ãŸãã¯ãã£ã¹ã¯I / Oã§ãã ãã ããJVMã«ã€ããŠè©±ããšãã¬ãŒãããžã³ã¬ã¯ã¿ãŒãããã©ãŒãã³ã¹ã®äž»èŠãªåé¡ããŸãã¯å¯äžã®ããã©ãŒãã³ã¹åé¡ãããããå ŽåããããŸãã ãããã£ãŠãããŒããé床ã«å€§ããããªãããã«ããŸããæ倧50ã®ã¬ãã€ãã§ãããããã«å€ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ããšã«4ã8ã®ã¬ãã€ãã§ãã ç§ãã¡ã¯ãããããè¶ ããŠå€§å®¹éã移åããããšããŠããŸãã 倧èŠæš¡ã§è² è·ã®å€§ãããã£ãã·ã¥ãäœæããããã®ãã¬ãŒã ã¯ãŒã¯ãäœæããŸããã ããããšæ¯èŒãããã®ãã£ãã·ã¥ã®è¿œå ã®å©ç¹ã¯æ°žç¶æ§ãã€ãŸãããŒã¿ã倱ãããšãªãã¢ããªã±ãŒã·ã§ã³ãåèµ·åã§ããããšã§ãã ããã¯å ±æã¡ã¢ãªã䜿çšããããšã§å®çŸãããŸããèµ·åçŽåŸã«ãã¢ããªã±ãŒã·ã§ã³ã¯å ±æã¡ã¢ãªãªããžã§ã¯ããããã»ã¹ã®ã¢ãã¬ã¹ç©ºéã«ããããããã¹ãŠã®ããŒã¿ãå«ããã£ãã·ã¥ãããã«å©çšå¯èœã«ãªããŸãã
-å·®ãè¿«ã£ãJDK 9ã®ãªãªãŒã¹ãšãã®äž»ãªæ©èœã§ããã¢ãžã¥ãŒã«æ§ã«ã€ããŠãã©ã®ãããªããšãèšããŸããïŒ
-ã¢ãžã¥ãŒã«æ§ã«ã€ããŠå€ãã®è©±ããããŸãããããªãªãŒã¹æ¥ã¯æçµçã«ãã®ã¢ãžã¥ãŒã«æ§ãå®æããããã«æ°å延æãããŸããã ãããåæã«ãç§ã®å人ã®éã§ã¯ããã®æ©èœãæ¬åœã«å¿ èŠãšããŠããåäžã®Javaéçºè ã¯ç¥ããŸããã JDK 9ãæ©æã«ãªãªãŒã¹ãããæ¹ãè¯ããšæããŸã-éçºè ã¯æè¬ããã ãã§ãã ããšãã°ãã¢ãžã¥ãŒã«æ§ã¯å©ããããå·ã€ããããã§ããçµå±ãå¯äœçšã®1ã€ã¯ãUnsafeã奥深ãã«é ãããç¹å¥ãªããŒããªããšã¢ã¯ã»ã¹ã§ããªãããšã§ãã ããããJDK 9ã§ã¯ãG1ãCompact StringsãVarHandlesãªã©ã®æ¹åã«ãããå°ãªããšãè©ŠããŠã¿ã䟡å€ã®ããã¯ããã«å¿«é©ãªã€ãããŒã·ã§ã³ãæåŸ ãããŠããŸãã
-éåžžã«å€§ãŸãã«èŠããšãC ++ãšJavaã®éãã¯ã©ã³ã¿ã€ã å±€ã«ãããŸããã©ã³ã¿ã€ã å±€ã¯ããšããããããããçš®é¡ã®æé©åãå®è¡ããŸãã ã©ã¡ããæãŸãããïŒãã·ã³ã®ã¢ãŒããã¯ãã£ãŒæ©èœãæåã§äœ¿çšããïŒC ++ïŒããŸãã¯åçãªJVMæé©åã«äŸåããæ¹ãè¯ãã§ããïŒ ç¹å®ã®ããšã«ã€ããŠè©±ãå Žåãèªåçã«ãŽããåéããããæåã§å¶åŸ¡ããæ¹ãè¯ãã§ããããïŒ
-ã¢ãããã£ãã³ã³ãã€ã«ãšèªåã¡ã¢ãªç®¡çã¯ãJavaã®åŒ·ã¿ã§ãã ãã®ç¹ã§ãä»®æ³ãã·ã³ã¯åªããŠãããéçã³ã³ãã€ã©ãŒãäžåããŸããã ããããäž»ãªããšã¯ããã§ãããããŸããã æäŸããã»ãã¥ãªãã£ä¿èšŒã®ããã«JVMãéžæããŸãã ãŸã第äžã«-ã¡ã¢ãªã®äžæ£ãªæäœã«ããèŽåœçãªãšã©ãŒããã®ä¿è·ã ãã€ã³ã¿ãŒã«é¢é£ããåé¡ããã¢ã³ãããŒãžã³ãŒãã§é åã®å¢çãè¶ ããåé¡ãæ¢ãã®ã¯ãæ¡éãã«å°é£ã§ãã ãããŠããã®ãããªãšã©ãŒãä¿®æ£ããã³ã¹ãã¯ãã¡ã¢ãªãžã®çŽæ¥ã¢ã¯ã»ã¹ãå¯èœã«ããå°ããªé床ã®å©ç¹ãã«ããŒããŠããŸãã äžèšã®ããã«ãæã Unsafeã䜿çšããŸãããããã®å ŽåãC ++ãšåããªã¹ã¯ã«èªåçã«ãããããŸãã ã¯ããJVMã¯ã©ãã·ã¥ãã³ããç解ããå¿ èŠãããå ŽåããããŸãããããã¯æ¥œããã¢ã¯ãã£ããã£ã§ã¯ãããŸããã ããããç§ãã¡ããŸã çŽç²ãªJavaã奜ãçç±ã§ãããã¢ã³ãããŒãžã³ãŒãã¯ç·æ¥ã®å Žåã«ã®ã¿äœ¿çšããŸãã
ãŸãããJavaã®ããã©ãŒãã³ã¹ã«é¢ããç¥è©±ãšäºå®ããšãããããã¯ã«ã€ããŠããžã§ãŒã«ãŒã«é¢ããã¬ããŒããäœæããŸãã
ããããªãŒã»ãã¹ãã«ãã¯
-JavaãšC ++ãããªãã®æèŠã§ã¯ãã©ã®èšèªãçŸåšæã人æ°ããããŸããïŒ äž¡æ¹ãšã倧人ã§ããã誰ãããæçããŠæŽç·ŽãããŠããŸããïŒ
-éèŠã«ã€ããŠè©±ããšããã¹ãŠãæããã§ããJavaã¯ãã¡ãããä»ã®èšèªãããéèŠããããŸãã C ++ã¯3ã€ã®äž»èŠãªåéïŒã²ãŒã éçºãéèãçµã¿èŸŒã¿ïŒã§ããããå ããŠããŸãããŸããHPCãšç§åŠèšç®ã®äž»èŠèšèªã§ããããŸãã ãããã£ãŠãå©å·±çãªå©çã«åºå·ããå ŽåãJavaã¯ãããã®é åã®ããããã«æå³çã«å ¥ããªãéããã¹ãã«ãšããŠç¢ºãã«å®å šã§ãã
æç床ã«é¢ããŠã¯ãããã§ã¯ãã¹ãŠãè€éã§ãããããæåã«èšèªã®æ©èœãã³ã³ãã€ã©ã®æ©èœãããã³æšæºã©ã€ãã©ãªã®æ©èœãå解ããå¿ èŠããããŸãã
æåããå§ããŸããã-èšèªã䜿ã£ãŠã ããã«ãåé¡ããããŸãã Javaã®åé¡ã¯ãèšèªãæãè¿ã競åä»ç€Ÿã»ã©éãéçºãããªãããšã§ãããã®çµæãæ©èœãéåžžã«é ããªããåžæã©ããã«æ©èœããŸããã CïŒã¯è¥ãããã©ã ããæåã«ç»å Žããããšã¯æ³šç®ã«å€ããŸãæèœã§æåããŸããã
C ++ã«é¢ããŠã¯ãããã§ã®äž»ãªåé¡ã¯ãC ++ãšCèšèªãšã®100ïŒ ã®äºææ§ã§ããããã¯ã誰ãå¿ èŠãšããªãèšèªæ©èœã®èšå€§ãªè·ç©ãèªåçã«æå³ããŸãã äžæ¹ã2000幎代ã®C ++ã®åæ»ã¯ãèšèªã«äººæ°ãè¿œå ããŸããã§ããã éçºè ã¯åžžã«æ°ããæ©èœãæäŸããå¿ èŠããããŸãã ããã§ç¶æ³ã¯æ¹åãããŸãã-C ++ã§ã¯ãã©ã ãïŒã¡ãªã¿ã«ãCïŒ/ Javaãããè¡šçŸåããããŸãïŒãå€æ°ã®åæšè«ãããã³é¢æ°ããè¿ãããå€ããããããŸããäžè¬ã«ãèšèªã¯äœããã®åœ¢ã§é²åããŸãã
ããã¯èšèªã«é©çšãããŸãã ã³ã³ãã€ã©ãŒã«ã€ããŠã ããã§ã¯ããŸããæ¯èŒãå®å šã«æ£ããããã§ã¯ãããŸããã JVMã¯JITã§ããã€ãŸãããã€ãã³ãŒããååŸããŠãçŸåšã®ããã»ããµã®çæ³çãªè¡šçŸã«å€æãããã¹ãŠã®æé©åãé©çšã§ãããšããèãæ¹ã§ãã ããã¯çè«äžã¯è¯ãããã«æããŸãããJavaã§ã©ã®ããã«æ©èœãããã¯ããããŸãããã.NETã®äžçã§ã¯ããã®ã¢ãããŒãã¯ãC ++ã³ã³ãã€ã©ã®æé©åãšæ¯èŒããŠããã¡ããå®éã«ã¯äœãããŸããã ããªããæ°åŠãããŠããå ŽåããŸãã¯ç§ã¯ãããèšããŸãïŒããšãã°ãããªãããããã¯ãŒã¯äžã§æ°åŠçãª.NETã©ã€ãã©ãªãè³Œå ¥ããå Žåãããã¯C ++ã®åãªãã©ãããŒã«ãªããŸãã
ã¯ããC++ã³ã³ãã€ã©ã«ã€ããŠã¯ãã€ã³ãã«C ++ãèšç®ã¿ã¹ã¯ã«äœ¿çšããŠããŸããã€ãŸããããã»ããµã®è£œé å ããæäŸãããŠããã³ã³ãã€ã©ã§ãã éåžžã«å€ãã®äžå©ãªç¹ããããŸããMSVCã«æ¯ã¹ãŠèšèªæ©èœãå°ãªãããµããŒãã«é£çµ¡ããªããã°ãªããªãåä»ãªééãããããããããŸããããã®ãµããã³ã¯åçŽãªçç±ã§æé©åãããŠããŸãã ã€ã³ãã«ã®ã³ã³ãã€ã©ã¯ãæãå¹ççãªã³ãŒããçæããŸãã ãã¡ãããããã¯åäžã®ã³ãŒãã§ã¯ãããŸãããããã§ã¯ãIntel Parallel Studioã®ãã¹ãŠã®èœåãåããŠããŸããããã¯ã䞊ååã®ããã®ã¹ã¬ãããã«ãã£ã³ã°ãããã¯ïŒã¡ãªã¿ã«ãMicrosoft Parallel Patterns Libraryã®é¡äŒŒç©ïŒãããã³çŽæ¥äœ¿çšããªããŠãIntel Math Kernel Libraryã§ãã MATLABãªã©ãä»ããŠéæ¥çã«äœ¿çšããŸãã ããã§ã¯ãMKLã®ãããªã©ã€ãã©ãªãIntelã®ã¹ã¿ããã«ãã£ãŠæ¢ã«æé©åãããŠããããšãæ確ã«ããå¿ èŠããããŸãïŒããã§ã¯ããã¯ãã«åã䞊ååãããã«ã¯MPIã«ããã¯ã©ã¹ã¿ãŒäžŠååïŒFFTã®å Žåãªã©ïŒãããã«äœ¿çšã§ããŸã-ã€ãŸããããã䜿çšããŠäœ¿çšããŸãã ãã¡ããããããã¡ã€ãªã³ã°ã®æ段ã«ã€ããŠãèšåãã䟡å€ããããŸãããããIPSã®äžéšã§ãã ããã¯éåžžã«åŒ·åãªããŒã«ãããã§ãããéçºè ãããã©ãŒãã³ã¹ãšæ£ç¢ºãã®ç¹ã§ã³ãŒããæé©åããã®ãæ¯æŽãããšããç®æšãæ¬è³ªçã«èšå®ããŸã-ã¡ã¢ãªãããã¡ã€ã«ãããããããªãŒã¯ãªã©ãã¹ãŠãç°¡åã«èŠã€ããããšãã§ããŸãã
æåŸã«ããifãã«ã€ããŠ-ãã¹ãŠãã·ã³ãã«ã§ãJavaãåã¡ãC ++ã§ãã¹ãŠãæªãã C ++æšæºã©ã€ãã©ãªã®ã€ã³ã¿ãŒãã§ãŒã¹èªäœãå°ãçã£ãŠãããšã¯èšããŸããããåé¡ã¯ãã¹ãŠããã¬ã¬ã·ãŒãã§ããã ãã§ãªããæ©èœãã»ãã®ããããããªãããšã§ãã ãšã«ããããã¡ã€ã«ã·ã¹ãã ã®ãµããŒããäœããã®ã¹ããªãŒã ãµããŒãã®ãããªãã®ãåŸãŸããã ãããŠãããã«æååããããŸããã¹ããŒã¹ã§éšåæååã«æã¡ããã§ã-ããã¯æšæºã©ã€ãã©ãªã«ã¯ãããŸãããã€ãŸãããµãŒãããŒãã£ã®ã©ã€ãã©ãªãååŸããå¿ èŠããããŸãïŒãŸããè¯ãããšã¯Boostã®ãããªãã®ããããå€ãã®æçšãªãã®ããããŸãïŒã ããããéçºã¯æ¬åœã«é ããªããŸãã Electronic Artsãªã©ã®å€ãã®äŒæ¥ã¯ãæšæºã«æºè¶³ããŠããªããããSTLã®å®è£ ãäœæããŠããŸãã å¯æ¬¡çã«ãå€ãã®äººã¯åºæ¬çã«æ°ãããŒãããã®ã©ã€ãã©ãªãç¹å®ã®STL2ãå¿ èŠã§ããããšãèªããŠããŸããããã¡ããããããStandard Library 2ãŸãã¯ãã®ãããªãã®ãšåŒã¶æ¹ãæ£ããã§ãããã
ããšãã°ãã¡ã€ã³ããã±ãŒãžãããŒãžã£ãŒãååšããªããªã©ããŸã å€ãã®åé¡ããããŸããããããã£ããšããŠããã©ã€ãã©ãªã¯ã©ã®ããã«æ©èœããŸããã JavaãŸãã¯.NETã§ã¯ãåçŽã«ãã€ããªãé åžã§ããŸãããC ++ã§ã¯åºæ¬çã«äžŠã¹æ¿ããå¿ èŠããããŸãã 誰ããŸã ãã®åé¡ãå®éã«æ±ºå®ããŠãããããããéçºãé ãããŸãã ä»ã®äººã®ã©ã€ãã©ãªã䜿çšããŠããããããªãã®ããã«æ©èœããããã«ããããã ãã«30åãè²»ããããšããããŸãã
-ããšãã°ãéè¡éšéãªã©ããšã³ã¿ãŒãã©ã€ãºã§ã¯äžè¬çã«èšèªã¯ã©ã®ããã«æããŸããïŒ ããšãã°ãHFTïŒé«åšæ³¢ãã¬ãŒãã£ã³ã°ïŒã®äžçã§ã¯ãéãè² è·ãšé«ãä¿¡é Œæ§ã®èŠä»¶ããããŸãã ãŸããéèæ¥çã¯éåžžã«ä¿å®çã§ãã ããã¯ç¹å®ã®æè¡ã®éžæã«ã©ã®ããã«åœ±é¿ããŸããïŒ
-äŒæ¥ã¯ãã®ãããªå€§ããªæ«ã®1ã€ã§ããããã®äžã§äŒæ¥ã®éçºãçŸåšé²è¡äžã§ãã ã°ããŒãã«-ããã¯ãã¡ããCïŒãšJavaã§ãããä»ã®èšèªã¯åšèŸºã®ã©ããã«ãããŸãã éè¡ã»ã¯ã¿ãŒã«ã€ããŠã¯ããã¹ãŠãããèå³æ·±ããã®ã§ãããC ++ãããã€ãã®å Žæã«ç»å Žããããšã¯ç¹ã«èå³æ·±ãã§ãããŸãããã«ãŒã ããŒã°ã®ãããªããã€ãã®ãªãã£ã¹ã¯äžè¬çã«å®å šã«C ++ã§ãããããã¯ç§ã«ã¯ç°åžžã®ããã§ãã äžè¬ã«ãçŸåšãéèå·¥åŠã®ä¿®å£«å·ãååŸããŠããå Žåãäž»ã«C ++ã§äœ¿çšãããŸãããçŸåšã¯PythonãRãªã©ã®äžè¬çãªèšèªã§ãããMATLABãé¢é£æ§ããããŸãã
HFTã«é¢ããŠããããã¯è«äºã®çã«ãªããããã¯ã§ãããã¯ããã»ãšãã©ã®å ŽåãC ++ãããã«ã¯ã·ã¹ãã Cãååšããããããçš®é¡ã®FPGAã䜿çšããŠCã«åŒãå¯ãããããã人ã ãããããçš®é¡ã®HDLèšèªã§èšè¿°ããŸãã é床ãšããã©ãŒãã³ã¹ãéèŠãªå Žåããã€ãã£ãã³ãŒãã¯å€å°è¿ã¥ããŸããããJavaã®é床ãäœäžããããšããè°è«ã¯ç§ã«ã¯ç¡é¢ä¿ã®ããã§ãã æåã®ã¡ã¢ãªç®¡çã ãããããæã«ã¯äººã ããããå¿ èŠãšãã誰ããäœããã®æªæã®ããåŠçãè¡ãå¿ èŠãããç¬éã«ãã¹ãŠã®ã¹ã¬ãããæ¥ãŠåæ¢ãã倧ããªæªæã®ããGCãæããŠããŸãã
éçãã¡ã€ãã³ã¹ã§ã¯ãããããã¯ä¿å®çãªèæ ®äºé ããããªãçãããŸããããªããªããFinmatã¯éåžžã®ãœãããŠã§ã¢éçºãšã¯å¯Ÿç §çã«ãããã°ã©ãã³ã°ãã·ã¹ãã 圢æã§ã¯ãªãè±èªãç¥ã£ãŠããã¹ãã«ãšèŠãªããŠããããã§ãã ãããã£ãŠã人ã ã¯åçŽã«C ++ãåŠã³ãèŠããããšã¯ãããŸããããä»ã§ã¯PythonãšRãåæã®ããã«ããã«äººæ°ããããŸãã ããããæè³éè¡ã®ããã©ã¹ãã¯ã¯ãŽã³ã§ãã
-çµã¿èŸŒã¿ããã€ã¹çšã®ãœãããŠã§ã¢ãéçºããå Žåãã©ã®èšèªã®æ¹ãè¯ããšæããŸããïŒ ãããã®èšèªã¯ã移æ€å¯èœãªã³ãŒãã®èšè¿°ãã©ã®ããã«èš±å¯ããŸããïŒ
-äžè¬ã«ãåã蟌ã¿ã®ãããã¯ã¯åºãããŸãã å€ãã®äººã«ãšã£ãŠãçµã¿èŸŒã¿ã¯ããããçš®é¡ã®Rasperry PiãŸãã¯Arduinoã§ãããç§ã«ãšã£ãŠã¯FPGAã§ãããä»ã®èª°ãã«ãšã£ãŠã¯äœãã§ãã ããããäžè¬åããå Žåãã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã«ã€ããŠèšãã°ãçµã¿èŸŒã¿ã¯ãã¡ããåºæ¬çã«CãŸãã¯C ++ã§ãã ãã¡ãããFPGAéçºã§ã¯ãVHDLãçŽæ¥äœ¿çšããããVHDLã®å€æåŸã«ç Žæ£ãããMATLABãäœæããŸã-æ¬è³ªã¯åããŸãŸã§ãã
ç¹ã«FPGAã«ã€ããŠã¯ããããå°ãªããšãäœããç解ããå¯äžã®ãããã¯ã§ãããããèšèªãšéçºã¢ãããŒãèªäœãããã¯ãããžãŒå šäœãC ++ãããã¯ããã«æªãç¶æ ã«é¥ãå¯èœæ§ãããããšã®è¯ãäŸã ãšèšããŸãå€ãã¢ãã«ãèšèªããããŠäžè¬çã«ã ãã®ãã¯ãããžãŒã䜿çšããã®ã¯éåžžã«é£ãããåºæ¬çã«ã¯ãMATLABãªã©ã®ããããçš®é¡ã®ãžã§ãã¬ãŒã¿ãŒã䜿çšããããç¬èªã®äœããäœæããŸãã ã€ãŸããçŽç²ã«ã·ã¹ãã ã¬ãã«ã§äœæ¥ãã人ã«ãšã£ãŠã¯ãããããæåã«ã·ããããã®ã¯æ®éã§ãããããšãã°ããŒããŠã§ã¢ã§äžé£ã®ããžãã¹ã«ãŒã«ãã·ãã¥ã¬ãŒãããã人ãšããŠã¯ããã®ã¢ãããŒãã¯ãŸã£ãã奜ãã§ã¯ãããŸãããå¿ èŠãªãã®ãé«ã¬ãã«ã§èª¬æããã«ã¯äžååã§ãã
ãããŠãç§ã¯Javaãšçµã¿èŸŒã¿ã«ã€ããŠè©±ãè³æ ŒããããŸããã
-éåžžã«å€§ãŸãã«èŠããšãC ++ãšJavaã®éãã¯ã©ã³ã¿ã€ã å±€ã«ãããŸããã©ã³ã¿ã€ã å±€ã¯ããšããããããããçš®é¡ã®æé©åãå®è¡ããŸãã ã©ã¡ããæãŸãããïŒãã·ã³ã®ã¢ãŒããã¯ãã£ãŒæ©èœãæåã§äœ¿çšããïŒC ++ïŒããŸãã¯åçãªJVMæé©åã«äŸåããæ¹ãè¯ãã§ããïŒ
-ããŠãç§ã¯ãã§ã«ãã®åé¡ã«è§ŠããŠããããã§ãããããã§ã¯ãã¹ãŠãäžäººåãã§ã¯ãããŸããã å®éã®ãšãããç§ã¯ãã¹ãŠã®ã¬ãã«ã®äžŠååãã€ãŸãSIMDãOpenMPãMPIã䜿çšããŠããŸããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã¿ãªã©ã®ä»æ§ã¯èšããŸã§ããããŸããã Javaã«ã¯ããã€ãã®çš®é¡ã®SIMDæé©åãããã.NETãåŸã ã«è¯ããªã£ãŠããããã«èŠããŸãããæ¬è³ªçã«ã¯C ++ã¯äŸç¶ãšããŠèªåæé©åã®ã«ãŒã«ãç¶æããŠããŸã.C ++ã§ã¯ã¢ã»ã³ãã©ãããã¯ãæåã§ãã³ããŒã§ããããšãå¿ããªãã§ãã ããã çŸåšãã¢ã»ã³ãã©ãç¥ã£ãŠãã人ã¯ããªãããšããããŠå€ãã®äººãC ++ãç®ã«ããŠããªãããšãç解ããŠããŸããããã€ã³ãã¯ãçŽç²ãªã³ã³ãã¥ãŒãã£ã³ã°ãã€ãŸãæ°åŠã«é¢ããŠã¯ãããã«ããããšããããšã§ãããªãã§ããïŒ
åçãªæé©åã¯ããŸãä¿¡ããŠããŸããããã®ãããåçŽãªã«ãŒããããå Žåããã®äžã«é åãåèšãããŠãããšããŸããã-ã¯ããèªèã§ããããã§äžŠååã§ããŸãã åé¡ã¯ãããšãã°ãããçš®ã®äžæ¯ãå€éšããã«ãŒãã«ãã©ãã°ããå Žåã§ãã OpenMPã«ã¯é©åãªããŒã¯ã¢ãããããããã€ãããã¯ãªããã£ãã€ã¶ãŒã¯ãã®ãããªåé¡ã解決ããããšã¯ã§ããŸããã ãããã£ãŠãããšãã°èª°ããCUDAãèŠãŠããã®ã¢ãã«ã¯å®å šã«éçŸå®çã§ãããšèšãã§ãããããªããã¹ãŠã®ã¢ã«ãŽãªãºã ãæžãæããããã«ã¯äœããåŠã¶å¿ èŠãããã®ã§ããããã ç§ã«ãšã£ãŠã¯ãããã¯é¿ããããªãããªããªã ãªããã£ãã€ã¶ãŒã¯ãç解ããããåçŽãªãã®ã§éåžžã«ããŸãæ©èœããããããçš®é¡ã®ã€ã³ã©ã€ã³åãè¡ããŸãããããã©ãŒãã³ã¹ã¯ãªãã£ã«ã«ãªãã®ã¯ãã¹ãŠèªåã®æã§äœæã§ãããã€ãã£ãã³ãŒãã§äœæã§ããèŠããããšã¯ã§ããŸããã
-Javaããã³C ++ãšã³ã·ã¹ãã ã¯ã©ã®çšåºŠåçã§ããïŒ æŽæ°ããªãªãŒã¹ãæšæºã¯ã©ããããã®é »åºŠã§å ¬éãããŸããïŒ æŽ»æ°ã®ããèšèªïŒè¡šç€ºãããèšèªæ©èœã®æ°ïŒ
-ããŠãããã©ã¹ãã¯äžæè°ãªãã®ã§ãããJavaã®èšèªãšã¯ç°ãªããèå³æ·±ãæ©èœãåããå€ãã®æ°ããèšèªãç»å ŽããŸããããããã¯ScalaãKotlinãªã©ã§ãã ãã1ã€ã¯ãèšèªãšãã©ãããã©ãŒã ãç°ãªãããšã§ãã èšèªãšããŠã®Javaã¯å€ãã®äººã«ã¯åããŠããªããããæ°ããèšèªã¯å®éã«ãããªã£ãŠããŸãã ãããããã©ãããã©ãŒã ãšããŠã¯ããã¹ãŠãé 調ã§ããæããã«ãæãè¿ã競åä»ç€Ÿãšæ¯èŒããŠãïŒããšãã°ãGCã«é¢ããŠïŒå©ç¹ããããŸãã ããããèšèªãšããŠ-èŠæ ã®çç±ã¯ãããããããŸãã
C ++ã«ã€ããŠã¯ãããããããã§è©±ãã¹ãã§ãã ãã¡ãããåœæ13人ã»ã©ã®ã³ãã¥ããã£ãäœãããªãã£ãåŸãæ°ããæšæºãšæ°ããã©ã€ãã©ãªæ©èœã¯ããã¡ãããå®å šã§ç¡é¢å¿ãšæ¯èŒããŠãè¯ããçŽ æŽããããšããèšããŸãã C ++ 11ã§å€ãã®ããšãèµ·ãããå€ãã®éåžžã«æçšãªé²æ©ããããŸãããä»ã以åãšã¯ãŸã£ããç°ãªãC ++ãæžããŠããŸãã C ++ 14ã§ã¯ããŸã å°ãæ¹åãããŠããŸãããC ++ 17ã§ã¯ãå šäžçãåã³å€±æããŸãã-ã€ãŸãã誰ããåŸ ã£ãŠããæ©èœã¯ããã«ãããŸããã 誰ããäžè¬çã«æãã§ããŠæ¬²ããã£ãäž»ãªæ©èœã¯ã¢ãžã¥ãŒã«ã§ãã ä»ã§ã¯C ++ã®ã³ã³ãã€ã«ãéåžžã«é ããªã£ãŠããŸããã€ãŸãããã©ã€ããªã³ã³ãã€ã«ã§ãã MSVCã«ããå€æã§ã¯ããã®å¢åæ§ã¯éåžžã«åªããŠããŸãããããšãã°ãŒãããçµã¿ç«ãŠãã®ã¯å¹³åçãªåã³ãããå°ãªãã§ãã ããŠãã¢ãžã¥ãŒã«ã¯ãã®åé¡ã解決ããå¿ èŠããããŸããããã€èª°ãç¥ããŸããã
ç¹°ãè¿ãã«ãªããŸãããC ++ã«ã¯ãæãåºæ¬çãªãã®ãæšæºã©ã€ãã©ãªã«ãªããšããåé¡ããããŸãã ãããŠãããã¯æååãå°æåã«å€æããå¿ èŠãããããããŒã¯ã³ã§æã€å¿ èŠãããåå¿è ã§ãã ãã¡ãããå€ãã®ãµãŒãããŒãã£ã©ã€ãã©ãªããããŸãããã©ã€ãã©ãªã®äœ¿ãããããåé¡ã§ãã ã¡ã¿ããŒã¿ãæã€èšèª-é¢æ°ã衚瀺ããããã®äœ¿çšæ¹æ³ãããããŸããããã¥ã¡ã³ããdocumentationããããŸãã ãŸããC ++ã§ã¯ãFuncåã®ãã³ãã¬ãŒãåŒæ°ïŒé¢æ°ïŒã䜿çšã§ããŸãããŸãã䞊ã¹æ¿ããè¡ã£ãŠããé¢æ°ã®ã·ã°ããã£ãç解ã§ããªãå ŽåããããŸãã å®éããããã©ããããã¯æ確ã§ã¯ãããŸããã
äžè¬ã«ãèŠçŽãããšãäž¡æ¹ã®èšèªã¯çããŠãããã®ããã«èŠãããã¹ãŠã¯å®éã«å¿ èŠãªãã®ã«äŸåããŸãã äžè¬çã«ãäž¡æ¹ã§çç£çã«æžãããšãã§ããŸãã Libã«é¢ããŠã¯ãããã§ããã¯è² ããŠããŸããããã¯èª°ã«ãšã£ãŠãæããã§ãã èšèªã¯ããªãå€ããã©ã€ãã©ãªã¯ãããšãååšããŠããŠããCã®äžçããã¯ããŸã䜿ãç©ã«ãªããªãããåã«ååšããªããããå€éšããæ¢ããŠããŠã³ããŒãããã³ã³ãã€ã«ããŠãã䜿çšããå¿ èŠããããŸãã
ãªã¬ã°ã»ã¯ã©ã¹ãã
-ãªãCïŒ
-SEMrushã«åå ãããšããä»ã®èšèªã®ãµãŒããŒããžãã¯ã«å€§ããªé²å±ã¯ãããŸããã§ããã åœæãç§ã¯äž»ã«Cã§ããã°ã©ãã³ã°ãããã®èšèªã§è£œåãéçºããããšã«ããŸããã ç§ã¯èªåãä¿¡ããŠããŸããã =ïŒ
ç§ã«ãšã£ãŠãCã¯ã·ã³ãã«ã§äŸ¿å©ãªèšèªã§ãã ã©ã€ãã©ãªã®ååãªã¹ãã«ãšç¥èãåããŠãããããã¹ã¯ãªããèšèªã¬ãã«ã§ã®éçºã®ãããã¿ã€ãã³ã°ã«æé©ã§ãã
SEMrushã§ã¯ããµãŒããŒããã°ã©ãã³ã°èšèªã®ãã¡ããã£ã¹ããªãã¥ãŒã·ã§ã³ã¯ããã次ã®ãšããã§ãã1/ 3ã¯Cããã³C ++ã1/3ã¯ã¹ã¯ãªããã1/3ã¯Javaã§ãã
-JavaãšCãä»æã人æ°ã®ããèšèªã¯äœã ãšæããŸããïŒ äž¡æ¹ãšã倧人ã§ããã誰ãããæçããŠæŽç·ŽãããŠããŸããïŒ
-ç§ã®çµéšã§ã¯ãèšèªCã§ã¯çç£çãªã¿ã¹ã¯ã«é¢é£ãããã®ãéçºãã䟡å€ãããããšã瀺åãããŠããŸãã ããšãã°ãããã¯ããœã±ãããããŒã¿å€éåãé«è² è·ã®ãã«ãã¹ã¬ããã¢ããªã±ãŒã·ã§ã³ã§åäœããã³ã³ãã¥ãŒã¿ãŒãªãœãŒã¹ãå®å šã«ç®¡çã§ããŸãã
SEMrushã¯ãã¢ããªã±ãŒã·ã§ã³é åããšã«ããã°ã©ãã³ã°èšèªãæ瀺çã«åºå¥ããŸããã æ°ãã補åãéå§ããå¿ èŠãããå Žåãèšèªã®éžæã¯ãã¢ãŒããã¯ãã£ãšããã°ã©ãã³ã°ã®éçºãéå§ãã人ã®ããæèã«äŸåããŸãã ãŸãã圌ãããã«ã³ãã¥ãã±ãŒã·ã§ã³ãå³ãã圌ãå®çŸãããã¢ã€ãã¢ãååã«äŒããããšãã§ãããã«ã€ããŠãã
ç§ãã¡ã«ãšã£ãŠéåžžã«äžè¬çãªã¿ã¹ã¯ã¯ãããŒã¿ã®åéãšåŠçã§ãã ããšãã°ããã¹ãŠã®è£œåã§Javaã䜿çšããããã§ã¯ãªãçç±ã®1ã€ã¯ããšã³ãã£ãã£ã«é¢ããŠã¯éçã®ç¶æ¿ããªãããã§ãã äœæ¥ã®è©³çŽ°ã«ãããåçŽé¢ã§ã®æ·±ãã¯æ°Žå¹³é¢ã§ã®æ·±ããããå°ãããªã£ãŠããŸãã ã€ãŸãã芪ãšåå«ã®éã§ã¯ãªããç¬ç«ãããšã³ãã£ãã£éã§å€§éã®ããŒã¿ã転éãããŸãã
-åå¥ã®ã·ã¹ãã ã¢ãžã¥ãŒã«ãç°ãªãèšèªã§éçºããç¹å®ã®ã¿ã¹ã¯ã®ããã«ãããã匷åããããšã¯çã«ããªã£ãŠããŸããïŒ
-ããã ãšæãã ãã®ç¹ã§ããã¹ãŠãéåžžã«ããŸãé 眮ãããŠããŸãã éçºã¯5ã6人ã®å°ã°ã«ãŒãã§å®è¡ãããåã°ã«ãŒãã¯ç¬èªã®è£œåã§åäœãããããã®éã®çžäºäœçšã¯APIãä»ããŠå®è¡ãããŸãã ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãšãµãŒãã¹ã®äž¡æ¹ããçžäºã«ãããŸããçžäºäœçšããå¿ èŠããããŸãã ããã¯ãããšãã°JSONãBinary-JSONãªã©ã®ããŒã¿åœ¢åŒã䜿çšããŠè¡ãããŸãã ãããã£ãŠãã¯ããç°ãªãèšèªã䜿çšããŠã·ã¹ãã å šäœãäœæã§ããŸãã
Cã§èšè¿°ãããç¬èªã®ããŒã¿ããŒã¹ãããããã®æäœã«å€§ããªåé¡ã¯ãããŸããã§ããã ãã®ããŒã¹ã®ã¢ãŒããã¯ãã£ãéçºããŠãããšããé©åãªæ¢è£œã®é©åãªããŒã«ã¯ãããŸããã§ããã ãã®ããŒã¿ããŒã¹ã¯éåžžã®ãã¡ã€ã«ã§æ©èœãããããèæ ®ãããšãéåžžã«ä¿¡é Œã§ããŸãã ã¹ã ãŒãºãªéçšïŒããã¯ã¢ãããã¯ã©ã¹ã¿ãªã³ã°ïŒã確ä¿ããããã®ãã¹ãŠã®å¯Ÿçãèæ ®ããé€å€ããå Žåããèœã¡ãããã©ã€ãïŒããŒããŠã§ã¢ã®èª€åäœãŸãã¯äºæããªãæè¡ççç±ïŒã§ã倧ããªå®³ã¯ãªããããŒã¿ã®8.5ïŒ ãã倱ãããŸããã ã€ãŸãããŠãŒã¶ãŒãèŠããå¯èœæ§ã¯ãããžãã¹ããžãã¯ã®ã¬ãã«ã§ããã«äœäžããŸãã ããããäžè¬çã«ãã·ã¹ãã ã¯ããŒã¿ã倱ãããªãããã«èšèšãããŠããŸãã ãã¹ãŠãéåžžã«ä¿¡é Œã§ããŸãã
12å°ã®ãã£ã¹ã¯ã§ããŒããŠã§ã¢ã®ããã©ãŒãã³ã¹ãæ倧éã«æŽ»çšããããã®ãã¹ããå®æœããŸããã RAID5ã䜿çšããå Žåãèªã¿åã/æžã蟌ã¿é床ã¯1å°ã®ããŒããã©ã€ãã®çŽ2.5åã®é床ã§ããã ããããã·ã¹ãã ã¯ããžãã¹ããžãã¯ã®ã¬ãã«ã§12åã®ãã£ã¹ã¯ãåå¥ã«äœ¿çšããŸããããã«ãããåã¹ããªãŒã ãç¬èªã®ãã£ã¹ã¯ã§åäœãããããé床ã11åã«ãªããŸãã
-ãšã³ã¿ãŒãã©ã€ãºã§ã¯äžè¬çã«èšèªã¯ã©ã®ããã«æããŸããïŒ
-ç§ãã¡ã«ã¯å€§ããªè£œåããããŸãã ããšãã°ããã®ãã¡ã®1ã€ã¯ã€ã³ã¿ãŒãããããã€ãã¹ããäºãã«ãªã³ã¯ããŠãããµã€ãããŒãžã®ããŒã¿ããŒã¹ãäœæããŸãã ã³ã¢ã¯Cã§èšè¿°ãããŠãããã»ãŒ100ïŒ ã®ãéããåŠåã§ããŸãã ãã®è£œåã«ã¯150å°ä»¥äžã®ãµãŒããŒãé¢ä¿ããŠããŸããããã®ã¢ãããŒãã«ããããµãŒããŒããŒã¯ã«éå°ãªæ¯æãããªãããšã確èªã§ããŸãããåç¥ã®ããã«ã財åå¹çãå¿é ã§ãã ãããšã¯å¥ã«ãã¢ãžã£ã€ã«éçºããã»ã¹ã®ãããã§ããŠãŒã¶ãŒã«æ°æ©èœãæäŸããæéãšãå補åã®ããã©ãŒãã³ã¹ãåäžãããæéã®äž¡æ¹ãããããšã«æ³šæããŠãã ããã
-ãšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ãšå¯èœãªãœãªã¥ãŒã·ã§ã³ãéçºããéã®æãäžè¬çãªããã©ãŒãã³ã¹ã®åé¡ã¯äœã§ããïŒ
-æ£çŽã«èšããšãç¹å®ã®åé¡ãæãåºãããšããã§ããŸããã çªç¶ååãªãã¯ãŒããªãå Žåã¯ãã¢ã»ã³ãã©ãŒãç¹å¥ãªã©ã€ãã©ãªãŒãé«çŽããã°ã©ããŒã®åªåã«ãããåé¡ãéåžžã«è¿ éã«è§£æ±ºã§ããŸãã ãããã99ïŒ ã®å Žåãçç£çãªãœãªã¥ãŒã·ã§ã³ã¯ãããŸããã
Javaã«åèŠã¯ãããŸããããããå€ãã®ãªãœãŒã¹ãæ¶è²»ããŸãã ã¯ãããã®å©ãã«ãããè€éãªãã«ãã¬ãã«ããžãã¹ããžãã¯ã®åé¡ã解決ããçžäºæ¥ç¶ãããã·ã¹ãã ãæ§ç¯ããã®ã«éåžžã«äŸ¿å©ã§ãã ãã ãããããã¯ãŒã¯ããã«ãã¹ã¬ããããã°ã©ãã³ã°ããŸãã¯å€§èŠæš¡ãªãã€ããªããŒã¿ãªã©ã®ã¿ã¹ã¯ã¯ãç§ã®æèŠã§ã¯Cã«é©ããŠããŸããJavaã§ããããè¡ãããšãã§ããŸãããCãéžæããŸãã
-ãçæ³çãªãããŒã¿ããŒã¹ã¯ã©ãããã¹ãã ãšæããŸããïŒ ã·ã¹ãã ã®ãã¹ãŠã®èœåãããŒã¿ããŒã¹ãžã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ãŠå¹³æºåãããå Žåãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæ°ã«ãã䟡å€ã¯ãããŸããïŒ
-çæ³çãªããŒã¿ããŒã¹ã¯æ®éçã§ã¯ãããŸããã -. , , «» .
â , , â Java ++?
â â , -. - , - â . . .
â Java C++? , , ? ( )?
â 99, , . , . ++ â ++14 ++17 (draft) , , . , . . .
++ ++. . . ++, .
â ? , ? ( ), ++ ?
â . â . 10 , , 10 , . , , , , . . â . , java , , .. C++ . , java , .
â Unsafe Java, ? ++?
â , Unsafe Java () , . unsafe java . , OpenJDK java.util.HashMap Map.Entry , , . , , .. , . , javac JIT- .
C++, - entry . , . ++ .
java ? Unsafe, off-heap ? , , , . java HashMap .
« », (Unsafe, VarHandlers, memory mapped files, ..). , JEP 169: Value Objects â , Java .
â Enterprise- ?
â , . , SQL-. ã€ãŸã . , , . «» . , . API 1000 , .
â JDK 9 â ? , Java?
â Java . , 30 , .
Java- ? ? .class JVM . JDK9, , , , java-. Java- , , .
â java-. JVM , .
â , C++ Java â runtime, , , ?
â Java â . , java- Iterator. , «» (invokeinterface). , Iterator . JIT- , , « hasNext». , - , « ».
C++, , , , .
, â . C++ «» , C++ (clang LLVM, ..).
?