ã³ã³ãã€ã«ããŒã«ãã§ãŒã³ã¯ãããããã·ã¹ãã ã®æ倧ãã€æãè€éãªã³ã³ããŒãã³ãã®1ã€ã§ãããååãšããŠãGCCãŸãã¯LLVMã®ããããã®ãªãŒãã³ãœãŒã¹ã³ãŒãã«åºã¥ããŠããŸãã Linuxã·ã¹ãã ã§ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšãã©ãŠã¶ãŒã®ã«ãŒãã«ã®ã¿ãããå€ãã®ã³ãŒãè¡ãæã¡ãŸãã åçšã·ã¹ãã ã®å Žåãã³ã³ãã€ã©ã¯ãœãŒã¹ã³ãŒããã©ãã§ãããä¿¡é Œæ§ãé«ãé«æ§èœãªãã€ããªã³ãŒããçæããå¿
èŠãããã絶察ã«ä¿¡é Œæ§ããªããã°ãªããŸããã
ã·ã¹ãã ã®ãã®ãããªå€§ãããè€éã§éèŠãªã³ã³ããŒãã³ãã¯ãããã§ããïŒ ãªãŒãã³ãœãŒã¹ã®ãããã§ãæã£ãã»ã©ã§ã¯ãããŸããã ãã®æçš¿ã§ã¯ãæ°ããåçšã³ã³ãã€ã«ããŒã«ãã§ãŒã³ã®æ§ç¯ãè«å€§ãªã³ã¹ããªãã§å¯èœã§ããããšã瀺ãå®éã®äŸã瀺ããŸãã

ã©ã®ãããã®ã³ãŒããå¿
èŠã§ããïŒ
ïŒ
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ã³ã³ãã€ã©ãŒã«ã€ããŠãã¹ãŠãç¥ãããšã¯ã§ããŸããã