ã·ã¹ãã ã®ãã®ãããªå€§ãããè€éã§éèŠãªã³ã³ããŒãã³ãã¯ãããã§ããïŒ ãªãŒãã³ãœãŒã¹ã®ãããã§ãæã£ãã»ã©ã§ã¯ãããŸããã ãã®æçš¿ã§ã¯ãæ°ããåçšã³ã³ãã€ã«ããŒã«ãã§ãŒã³ã®æ§ç¯ãè«å€§ãªã³ã¹ããªãã§å¯èœã§ããããšã瀺ãå®éã®äŸã瀺ããŸãã
ã©ã®ãããã®ã³ãŒããå¿ èŠã§ããïŒ
ïŒ SLOCCount ãèè David A WheelerïŒã«ããåæã§ã¯ãGCCã«ã¯500äžè¡ä»¥äžãå«ãŸããŠããããšã瀺ãããŠããŸãã LLVMã¯ããå°ãããããã160äžè¡ã§ãããããè¥ããããã©ã«ãã§CãšC ++ã®ã¿ããµããŒãããã¿ãŒã²ããã¢ãŒããã¯ãã£ã3åå°ãªããªã£ãŠããŸãã ãã ãã䟿å©ãªããŒã«ãã§ãŒã³ã«ã¯ããã«å€ãã®ã³ã³ããŒãã³ãããããŸãã
- ãããã¬ãŒïŒGDBïŒ800Kè¡ïŒãŸãã¯LLDBïŒ600Kè¡ïŒ
- ãªã³ã«ãŒïŒGNU ldïŒ160Kè¡ïŒãgoldïŒ140Kè¡ïŒããŸãã¯lldïŒ60Kè¡ïŒ
- ã¢ã»ã³ãã©ãŒ/éã¢ã»ã³ãã©ãŒïŒGNUã¬ã¹ïŒ850Kè¡ïŒããŸãã¯LLVMã¢ã»ã³ãã©ãŒ
- ãã€ããªãŠãŒãã£ãªãã£ïŒGNUïŒ90Kè¡ïŒããã³/ãŸãã¯LLVMïŒLLVMãœãŒã¹ã«å«ãŸããŠããŸãïŒ
- ãšãã¥ã¬ãŒã·ã§ã³ã©ã€ãã©ãªïŒlibgccïŒGCCãœãŒã¹ã«å«ãŸããŠããŸãïŒãŸãã¯CompilerRTïŒ340Kè¡ïŒ
- Cæšæºã©ã€ãã©ãªïŒnewlibïŒ850Kè¡ïŒãglibcïŒ1.2Mè¡ïŒãmuslïŒ82Kè¡ïŒããŸãã¯uClibC-ngïŒ251Kè¡ïŒ
ããã«ãããŒã«ãã§ãŒã³ããã¹ãããå¿ èŠããããŸãã ã»ãšãã©ã®GNUããŒã«ã§ã¯ãååž°ãã¹ãããœãŒã¹ã«çµã¿èŸŒãŸããŠããŸãã LLVMã§ã¯ãååž°ãã¹ãã«ã¯50äžè¡ã®åå¥ã®ã³ãŒãããŒã¹ããããŸãã ããã«ãçµã¿èŸŒã¿ã·ã¹ãã ã§ã¯ããã¹ãäžã«ãããã¬ãšå¯Ÿè©±ããããã«ãããã°ãµãŒããŒãå¿ èŠã§ãã
ã³ã³ãã€ã©ã移æ€ããã«ã¯äœãå¿ èŠã§ããïŒ
åçšå©çšã®ããã«ããŒã«ãã§ãŒã³ã移æ€ããå¿ èŠããããŸãã äžçäžã®å€ãã®å€§åŠé¢çãç 究ã®éçšã§ã³ã³ãã€ã©ã移æ€ããŠããŸããã圌ãã®åªåã¯ãã®ç 究ã®çãé åã«éäžããŠããŸãã ãã®çµæãã³ã³ãã€ã©ã¯è¿ éã«ç§»æ€ãããŸãããããã¯ç 究ããã°ã©ã ã®ç®çã§ã¯ãªããããå®å šã§ãä¿¡é Œæ§ããããŸããã
ãã®èšäºã¯ããããããœãŒã¹ã³ãŒãã«å¯ŸããŠæ£ç¢ºãã€å¹ççãªãã€ããªã確å®ã«çæããããŒã«ãããã®äœæã«é¢ãããã®ã§ãããåçšããã³ç£æ¥çšã察象ãšããŠããŸãã
幞ããªããšã«ã巚倧ãªã³ãŒãããŒã¹ã®ã»ãšãã©ã¯æ±çšã§ãã ãã¹ãŠã®ã¡ã€ã³ã³ã³ãã€ã©ã®éçºã§ã¯ãã¿ãŒã²ãããã©ãããã©ãŒã ã«å¿ããŠã³ãŒããé©åã«åé¢ããããã«ããªãã®åªåãæãããŠãããã³ã³ãã€ã©ããŒã«ãã§ãŒã³ãæ°ããã¢ãŒããã¯ãã£ã«ç§»æ€ããããšã¯å®è¡å¯èœãªã¿ã¹ã¯ã§ãã ãã®ã¿ã¹ã¯ã«ã¯5ã€ã®ã¹ããŒãžãå«ãŸããŸãã
1.ãããã¿ã€ãã³ã°
æåã«ããã¹ãŠã®ã³ã³ããŒãã³ããå«ãããŒããäœæãããŸãã ãããã¿ã€ããäœæããããšã¯ããã«ããŒãã£ã³ã°ã§æãåé¡ã®ããå Žæãç¹å®ããããã«éèŠã§ãããæ°ãæããããŸãã ãã®æ®µéã®æåŸã«ããã¹ãŠã®ã³ã³ããŒãã³ããæåŸ ã©ããã«é£æºããããšãå®èšŒããããã°ã©ã ãã³ã³ãã€ã«ã§ããªããã°ãªããŸããã
2.å®å šãªæ©èœã®å®è£
ãã¹ãŠã®ã³ã³ãã€ã©ãŒæ©èœããã³ãã®ä»ã®ããŒã«ã®å®äºã å±æ§ãçµã¿èŸŒã¿/çµã¿èŸŒã¿é¢æ°ãããã³æ¬ èœããŠããæ©èœã®ãšãã¥ã¬ãŒã·ã§ã³ãå®äºããå¿ èŠããããŸãã ãªã³ã«ã¯åäœããBSPã«ãã£ãŠèšè¿°ãããå¿ èŠã«å¿ããŠã«ã¹ã¿ã ãªãã·ã§ã³ãè¿œå ããå¿ èŠããããŸãã ãã®ããã»ã¹ã®æåŸã«ããŠãŒã¶ãŒã¯å®å šã«æ©èœããããŒã«ãã§ãŒã³ãåãåããŸãã æãéèŠãªã®ã¯ãååž°ãã¹ãã®å®å šãªã»ããã«åæ Œããå¿ èŠãããããšã§ãã
3.ãã¹ãã
ãããžã§ã¯ãã®æ倧ã®éšåã ãã¹ãã¯3ã€ã®é åãã«ããŒããå¿ èŠããããŸãã
-ååž°ãã¹ããããŒã«ãã§ãŒã³ãå£ããŠããããããŸããŸãªã¢ãŒããã¯ãã£ã§æ©èœããããšã瀺ããŠããŸãã
-ã¢ããªã±ãŒã·ã§ã³ãã¹ãïŒã³ã³ãã©ã€ã¢ã³ã¹ãã¹ãïŒãå€ãã®å Žåã顧客ãã¹ãã䜿çšããå¿ èŠãªæ©èœããã¹ãŠååšããããšã瀺ããŸãã
-çæãããããŒã«ãã§ãŒã³ã³ãŒãããå¿ èŠãªã³ãŒãå®è¡é床ãã³ãŒããµã€ãºããšãã«ã®ãŒå¹çã®åºæºãæºãããŠããããšã瀺ããã³ãããŒã¯ã
4.å±é
ãã®æ®µéã§ã¯ããŠãŒã¶ãŒãæ°ããã³ã³ãã€ã©ãŒãšããã以åã®ããŒã«ãšã©ã®ããã«éãããåŠã¶ã®ãæ¯æŽããå¿ èŠããããéåžžããã«ã¯æžé¢ãšãããªã®ãã¥ãŒããªã¢ã«ãå¿ èŠã§ãã æ°ãããã°ãæ€åºãããå€ãã³ã³ãã€ã©ãšæ°ããã³ã³ãã€ã©ã®éãã«èµ·å ããå€ãã®ãã°ã¬ããŒãããããŸãã ããã¯ãLLVMãšGCCãå€ããããã©ã€ãšã¿ãªã³ã³ãã€ã©ã眮ãæãããšãã«çºçããŸããããã¯ãããããæ©èœæ§ã«é¢ããŠã¯ããã«éçºãããŠãããšããäºå®ã®ããã§ãã ãŠãŒã¶ãŒããŒã¹ã倧ããå Žåãå±éãã§ãŒãºã¯éåžžã«éèŠã«ãªããŸãã
5.ãšã¹ã³ãŒã
LLVMãšGCCã¯éåžžã«æŽ»çºã«éçºãããŠãããããã³ããšã³ãã§æ°ããèšèªæšæºããµããŒãããããã¯ãšã³ãã«æ°ããæé©åãè¿œå ããããã«ãæ°ããæ©èœãåžžã«è¿œå ãããŠããŸãã ããããã¹ãŠã®å€æŽãåæ ããŠãã³ã³ãã€ã©ãææ°ã®ç¶æ ã«ä¿ã€å¿ èŠããããŸãã ããã«ããã¡ãããã¿ãŒã²ããã¢ãŒããã¯ãã£ã«åºæã®æ°ããæ©èœãšããŠãŒã¶ãŒããã®ãã°ã¬ããŒãããããŸãã
äžè¬çãªå Žåã«å¿ èŠãªåŽå
äžè¬çãªã±ãŒã¹ãèããŠã¿ãŸãããã 倧èŠæš¡ãªãŠãŒã¶ãŒããŒã¹ãæã€æ°ããã¢ãŒããã¯ãã£ã¯ããã¢ã¡ã¿ã«ãšLinuxã®äž¡æ¹ã§Cããã³C ++ããµããŒãããå¿ èŠããããŸãã ãã®å Žåãã¢ãŒããã¯ãã£ã¯ããããããã¢ã¡ã¿ã«ã¢ããªã±ãŒã·ã§ã³ãçµã¿èŸŒã¿ã·ã¹ãã ã®RTOSã«äœ¿çšãããå°ããªããã»ããµãããæ¬æ ŒçãªLinuxç°å¢ãå®è¡ã§ãã倧ããªããã»ããµãŸã§ãããŸããŸãªå®è£ ããµããŒãããŸãã
ãã®ãããªããŒã«ãã§ãŒã³ã®å®å šãªãªãªãŒã¹ã«ã¯1ã3人幎ããããŸãã ããŒã«ãã§ãŒã³ã®åæããŒãžã§ã³ïŒæŠå¿µå®èšŒïŒã¯3ãæ以å ã«å®è£ ããå¿ èŠããããŸãã ãã¹ãŠã®æ©èœã®å®è£ ã«ã¯6ã9ãæãããããã¢ã¡ã¿ã«ãšLinuxã®ãµããŒããå¿ èŠãªå Žåã¯ããã«3ãæããããŸãã
ãã¹ãã«ã¯å°ãªããšã6ãæããããŸãããç¹å®ã®ãã¹ããå€æ°ããå Žåãæ倧12ãæãããããšããããŸãã åæå±éã«ã¯3ãæããããŸããã倧èŠæš¡ãªãŠãŒã¶ãŒããŒã¹ã§ã¯9ãæé·ããããããšããããŸãã
ãµããŒãã®åãçµã¿ã¯ããŠãŒã¶ãŒã¬ããŒãã®æ°ãšæ°æ©èœã®æ°ã«å€§ããäŸåããŠããŸãã ãããã®åãçµã¿ã«ã¯ãæã«0.5人æãããããå¯èœæ§ã®é«ãæã«1人æãããããŸãã
ã³ã³ãã€ã©ã®å°é家ããããã°ã®å°é家ãã©ã€ãã©ãªå®è£ ãšã³ãžãã¢ãªã©ããšã³ãžãã¢ã®ããŒã å šäœããããžã§ã¯ãã«åãçµãå¿ èŠãããããšã«æ³šæããããšãéèŠã§ãã ã³ã³ãã€ã©ãŒéçºã¯æãè€éãªåéã®1ã€ã§ããããã¹ãŠã®åéãäžåºŠã«çµéšã§ãããšã³ãžãã¢ã¯ããŸããã
æãåçŽãªå Žåã«ã©ãã ãã®åŽåãå¿ èŠã
å€æ°ã®ãŠãŒã¶ãŒã䜿çšããã³ã³ãã€ã©ãŒãåžžã«å¿ èŠãªããã§ã¯ãããŸããã åäžã®ãšã³ãžãã¢ã§æ§æãããå°èŠæš¡äŒæ¥ã§éçºããããããŸããŸãªç¹å®ã®ããã»ããµãç¹ã«DSPããããŸãã ãã®ãããªããã»ããµãŒãåæ¥çã«æåããããšã蚌æããããšãé²åãå§ããåäžã®ãšã³ãžãã¢ã«ãã£ãŠã¢ã»ã³ãã©ãŒã§ããã°ã©ã ãããå°ããªã«ãŒãã«ã®ä»£ããã«ã圌ãã¯å€§èŠæš¡ãªã¢ã»ã³ãã©ãŒããã°ã©ããŒã®ããŒã ã§ãã匷åãªããã»ããµãŒã«ãªããŸãã ãã®å ŽåãCèšèªã³ã³ãã€ã«ã«åãæ¿ãããšãçç£æ§ãå€§å¹ ã«åäžããéçºã³ã¹ããåæžãããŸãã
ãã®ãããªå ŽåãããŒã«ãã§ãŒã³ã¯C ++ãªãã®Cãããã³æäœéå¿ èŠãªã©ã€ãã©ãªCããµããŒãããå¿ èŠããããŸãããŸããã¢ãŒããã¯ãã£ã«ã¯ã䜿çšå¯èœãªæ¢è£œã®ã¢ã»ã³ãã©ãšãªã³ã«ãå«ããããšãã§ããŸãã ããã«ãããå®å šã«æ©èœããã³ã³ãã€ã©ãäœæããããã®åŽåãæ倧1人幎ãŸã§å€§å¹ ã«åæžãããŸãã
æŠå¿µå®èšŒæ®µéã«ã¯ãŸã 3ãæããããŸããããã®åŸããã«3ãæã§å®å šã«æ©èœããããŒãžã§ã³ã«ãªããŸãã ãã¹ãã¯äŸç¶ãšããŠæãæéããããã3ã6ãæç¶ããŸããããŠãŒã¶ãŒããŒã¹ãå°ããå Žåã¯3ãæã§ååã§ãã
ãµããŒããå¿ èŠã§ãããå°ããªãŠãŒã¶ãŒããŒã¹ã®å°ããªã·ã¹ãã ã§ã¯ã1ãæããã0.25人æã§ååã§ãã
å°èŠæš¡ãªã客æ§ã®å Žåããã¹ãŠã®æ©èœãå®è£ ããåŸã«åæ¢ããããšãéèŠãªå ŽåããããŸãã å°æ°ã®æšæºããã°ã©ã ãã³ã³ãã€ã«ãããå Žåãããã¯ãã¹ãã®å®å šãªã»ãããééããããšãªããã³ã³ãã€ã©ã®æå¹æ§ãå®èšŒããã®ã«ååãããããŸããã
ãããã¯ç 究
2016幎ããã€ã¯ããšã¬ã¯ãããã¯ã¹äŒæ¥ã¯Embecosmã«é£çµ¡ããŸãããEmbecosmã¯é·å¹Žãçããã£ãŒã«ãçšã«ç¹å¥ã«èšèšããã16ãããã¢ãã¬ã¹ç©ºéãæã€ç¬èªã®DSPã䜿çšããŠããŸããã 圌ãã¯ãã¢ã»ã³ããªèšèªããã°ã©ãã³ã°ã«ããŸãã«ãå€ãã®åŽåãè²»ãããŠããããšã«æ°ä»ãããšãã«ã第3äžä»£ã®ããã»ããµã䜿çšããŸããã 䜿çšããæšæºã³ãŒããã¯ã«Cã®ãªãã¡ã¬ã³ã¹å®è£ ããã£ããããç¶æ³ã¯æªåããŸãããã³ã³ãã€ã©ãŒã¯ãããŸããããéåžžã«å€ããæ°äžä»£ã®DSPã«ã³ãŒãã移æ€ããããšã¯äžå¯èœã§ããã
Embecosmã¯LLVMããŒã¹ã®ããŒã«ãã§ãŒã³ã«ãã£ãŠæ³šæãããŠãããLLVMã³ãŒããã¯ãã³ã³ãã€ã«ããŠé«å質ã®ã³ãŒããçæã§ããŸãã å¿ èŠã«å¿ããŠãã³ãŒããæåã§å€æŽãããšæ³å®ãããŠããŸããã 顧客ã«ã¯æ¢è£œã®ã¢ã»ã³ãã©ãŒãšãªã³ã«ãŒãããããã¹ãŠã®ã¢ã»ã³ãã©ãŒãã¡ã€ã«ã1ã€ã«çµåãããã¹ãŠã®ãªã³ã¯ããªã³ã¯ããDSPã«èªã¿èŸŒãŸãããã€ããªãã¡ã€ã«ãçæããŸããã ãŸãã顧客ã¯ã³ã³ãã€ã©ã®æ§ç¯ã®çµéšãåŸãããšèããŠããããã顧客ã®ãšã³ãžãã¢ã®1人ãEmbecosmããŒã ã«å ããããããžã§ã¯ãã®å®äºæã«ã³ã³ãã€ã©ã®ãµããŒãã«é¢äžããŠããŸããã
æåã®3ãæã§ãæ¢åã®ã¢ã»ã³ãã©ãŒãšéã¢ã»ã³ãã©ãŒã«åºã¥ããããŒã«ãã§ãŒã³ãéçºããŸããã newlibã䜿çšããããã«ãå¿ èŠãªãã¡ã€ã«ãã¢ã»ã³ãã©ãŒãœãŒã¹ã®åœ¢åŒã§newlibããæœåºãããã¹ãããã°ã©ã ãšçµåããæ¬äŒŒãªã³ã«ãŒãäœæããŸããã ãªããªã ã·ãªã³ã³ããã»ããµãå©çšã§ããªãã£ãããããããã®Verilatorã¢ãã«ã§ãã¹ãããŸããã ãããè¡ãããã«ãGDBãã¢ãã«ãšå¯Ÿè©±ã§ããããã«ããgdbãµãŒããŒãäœæããŸããã ELFããªãå ŽåããœãŒã¹ã¬ãã«ã§ã®ãããã°ã¯äžå¯èœã§ãããGDBã¯ããã°ã©ã ãããŒãããŠçµæãååŸã§ããŸããããã¯ãã¹ãã«ååã§ãã
ããã«ããããã¹ãããã°ã©ã ãã³ã³ãã€ã«ããã³ã³ãã€ã«ããŒã«ãã§ãŒã³ãæ©èœããŠããããšãå®èšŒã§ããŸããã å®å šãªæ©èœãå®çŸããã«ã¯2ã€ã®é害ãããããšãæããã«ãªããŸããã1ïŒãã€ããªELFãã¡ã€ã«ã®ãµããŒãã®æ¬ åŠã2ïŒ16ãããæåã®ãµããŒãã®æ¬ åŠã
第2ãã§ãŒãºã§ã¯ãCGENã䜿çšããŠGNUã¢ã»ã³ãã©ãŒ/éã¢ã»ã³ãã©ãŒãå®è£ ããŸãããçŽ10æ¥ããããŸããã ãã®æçš¿ã§èª¬æãããŠããããã«ãLLVMã§16ãããæåã®ãµããŒããå®è£ ããŸããã ããã2ã€ã®ããšã«ããããã«æ©èœã®ããŒã«ãã§ãŒã³ã®å®æã容æã«ãªããããŒã«ãã§ãŒã³ã®æšæºLLVMç¹ç¯ãã¹ããšGCCååž°ãã¹ããå®è¡ã§ããŸããããã®ã»ãšãã©ã¯æåããŸããã DSPã«ã¯ãããã€ãã®ç¹å¥ãªåºå®å°æ°ç¹æŒç®ãµããŒãã¢ãŒãããããŸãã ãããããµããŒãããããã«ãç¹å¥ãªçµã¿èŸŒã¿é¢æ°ãšçµã¿èŸŒã¿é¢æ°ãå®è£ ããŸããã
ãã®æ®µéã§ã¯ãã客æ§ã®ã³ãŒããæ£ããã³ã³ãã€ã«ããã³ã³ãã€ã©ãŒããããŸãã ELFãµããŒãã«ããããªã³ã¯ææé©åïŒLTOïŒãã»ã¯ã·ã§ã³ã®ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãªã©ã®ææ³ãå¯èœã«ãªããã³ãŒãã®æé©åã«æåããããã¯éãããã¡ã¢ãªéã§é¡§å®¢ã®èŠä»¶ãæºãããŸãã 120人æ¥ãšããã³ã¹ãã§ãæ°ããDSPçšã«Cã³ãŒããã³ã³ãã€ã«ãããšããç®æšãéæãããŸããã
顧客ã¯ããã®æ®µéã§æ©èœãèªåã«åã£ãŠãããšå€æããäœæ¥ã®ç¶ç¶ã¯å¿ èŠãããŸããã ã³ã³ãã€ã©ãå¹ åºãæ¶è²»è ã«å©çšå¯èœã§ãããšå€æããå Žåã圌ãã¯ããŒã«ãã§ãŒã³ã®å®å šãªãã¹ããç¶ããŠäœæ¥ããããšãã§ããŸãã
çµè«
2ã€ã®èŠå ã«ããã120人æ¥ã§å®å šã«æ©èœããã³ã³ãã€ã«ããŒã«ãã§ãŒã³ãæ§ç¯ã§ããŸããã
ãªãŒãã³ãœãŒã¹ã®ã³ã³ãã€ã©ã䜿çšãã
ãã®ãããžã§ã¯ãã§äœ¿çšãããŠããããŒã«ã¯ãéå»30幎éã«ã³ã³ãã€ã©ã³ãã¥ããã£ãæ°å人幎ãè²»ãããçµæã§ãã ã客æ§ã¯ãã®å©ç¹ã掻çšããŠãææ°ã®ããŒã«ãã§ãŒã³ãååŸããããšãã§ããŸããã
å°é家ããŒã
120æ¥éã®ãããžã§ã¯ãã§ãããã5人ã®ããŒã ãããã«åãçµã¿ããããããé·å¹Žã®çµéšãæã£ãŠããŸãã ãšãã¥ã¬ãŒã·ã§ã³ãGDBãCGENã¢ã»ã³ãã©ãŒãGNUãªã³ã«ãŒãLLVMã³ã³ãã€ã©ãŒã«ã€ããŠãã¹ãŠãç¥ãããšã¯ã§ããŸããã