![](https://habrastorage.org/files/d7f/a9d/6cd/d7fa9d6cdeda49f2adc07a985b005f41.jpg)
ãã®èšäºã¯ãããŠã¹ãã¯ãªãã¯ãããããã³ã³ãã¥ãŒã¿ãŒã®åäœãé ããªã£ããšããäºå®ã®çµæãšããŠã2016幎4æã«å§ãŸããŸããã å®éãããã¯å€ãã®ãã¹ãïŒ2010幎以éã®äžéšïŒãšç§ã®åå è ãšã®è°è«ããŸãšãããã®ã§ãã ãããã¯æçµçãªçµè«ã§ã¯ãªããäžéçãªãã€ã³ãã§ãããäœãæ¢ããããã«æãäžããã¹ããã瀺ããããå®å šã«çµäºãããšã¯èšããŸããã
ãã®ååã¯ã2016幎ã«ã¡ããã©10æ³ã§ãã£ãNicklaus Wirthã®èšäºãDown with the Fat ProgramsãããäžéšåŒçšãããŠããããã®é¢é£æ§ã¯å€±ãããŠããŸãã-ããããããã¯æ°ããã¬ãã«ã«éããŠãããæ £ããŠããªã-ãããèªãã§ãã ããã
ã·ã¹ãã ãšããã°ã©ã ã®ããã©ãŒãã³ã¹ã«åœ±é¿ããããŸããŸãªåŽé¢ãèæ ®ããŠãã ããã
èšèªçåŽé¢
ã¡ã¢ãªã®åŽé¢
çŸå®äžçã®åŽé¢
éèšèªçèŠå
ãã¥ãŒãã³ãã¡ã¯ã¿ãŒã®åŽé¢
èšèªçåŽé¢
aïŒããã°ã©ãã³ã°èšèªãšã³ã³ãã€ã©ã®åœ±é¿
åã®ã³ã¡ã³ãã§è¿°ã¹ãããã«ããè¯ããèšèªã䜿çšãããšãé床ã«ããªãã®éããçããŸãã
å€ãè¯ãS.ãåºæºç¹ãšããŠã¿ãŸããããã¢ã»ã³ãã©ãŒã¯ååãªå€åãã䜿ãã°ããè¯ãçµæãåŸãããããšã¯æããã§ãããã¢ã»ã³ãã©ãŒã®äžçãšãããã«é¢é£ããé«æ¬¡åŸ®èª¿æŽã¯ã¢ã¯ã»ã¹ã§ããªãçæ³ã®ãŸãŸã§ãã
2ã€ã®æ¹æ³ã§ã¢ã¹ãã¯ãã®è©äŸ¡ãæ€èšããŠãã ããïŒæµ®åå°æ°ç¹èšç®ã«ããŸãäŸåããªãããžãã¹ã¢ããªã±ãŒã·ã§ã³ãšãçŽç²ãªèšç®ã¿ã¹ã¯ã
次ã«ããããã®éã®ã°ã©ããŒã·ã§ã³ãééããŸãã
æŽæ°èšç®ã®ãã¹ãã¯Dhrystoneã§ãïŒå€ããŠæªãããšã¯ç¥ã£ãŠããŸãããç©Žã®æ·±ããè©äŸ¡ããã®ã«éåžžã«é©ããŠããŸã-åºæ¬çãªèšèªæäœã®è¯ãã»ããããããŸãïŒã
ããã«æçš¿ããã³ããŒãšå€æŽããããœãŒã¹github.com/Siemargl/FatProgs
ã»ã°ã¡ã³ãã®æ¥µç«¯ãªç¹ã¯ãæé©åãããCããã°ã©ã ãšè§£éãããPython3.6ããã°ã©ã ã§ãïŒPythonãå«ãã§ã¯ãªãã以åã®åæ§ã®ãã¹ãã§ãã¹ãŠã倱ãããã€ã³ãBã§ãããæ¢ã«æºåãæŽã£ãŠããããïŒ
ãã©ã€ã¹ããŒã³ã®çµæ
gcc.EXEïŒtdm-1ïŒ4.9.2
> gcc_dry2 500000000
ãŠãŒã¶ãŒæé= 27ç§
Dhrystoneã1åå®è¡ãããã€ã¯ãç§ïŒ0.1
ãã©ã€ã¹ããŒã³/ç§ïŒ18518518.0
DMIPS 10539.9
5,000,000ãã¹ã®PystoneïŒ1.2ïŒæé= 46.4937
ãã®ãã·ã³ã¯ã107542 pystone /ç§ã§ãã³ãããŒã¯ããŸã
é床ã®éãã¯172åã§ãã ãœãŒã¹ãèŠããšããã¹ããŒã³ã¯å ã®dystinstoneã§ãã
è©æ¬ºãæé€ããã«ã¯ãTinyCã䜿çšããŸããTinyCã¯ãååãšããŠæé©åããæ¹æ³ãç¥ããŸããã
ãŠãŒã¶ãŒæé= 55ç§
Dhrystoneã1åå®è¡ãããã€ã¯ãç§ïŒ0.1
ãã©ã€ã¹ããŒã³/ç§ïŒ9090909.0
DMIPS 5174.1
ãåèšãã¯ã€ã³ã¿ããªã¿ãã84åéããæé©åããŒãžã§ã³ã®2åé ããªããŸãã
> gcc -O2 -DTIME -DHZ = dhry_1.c dhry_2.c -o gcc_dry2
DïŒ\ VSProjects \ _pl_benchmark \ Dhrystone> gcc --version
gcc.EXEïŒtdm-1ïŒ4.9.2
> gcc_dry2 500000000
ãŠãŒã¶ãŒæé= 27ç§
Dhrystoneã1åå®è¡ãããã€ã¯ãç§ïŒ0.1
ãã©ã€ã¹ããŒã³/ç§ïŒ18518518.0
DMIPS 10539.9
> python.exe pystone.py
5,000,000ãã¹ã®PystoneïŒ1.2ïŒæé= 46.4937
ãã®ãã·ã³ã¯ã107542 pystone /ç§ã§ãã³ãããŒã¯ããŸã
é床ã®éãã¯172åã§ãã ãœãŒã¹ãèŠããšããã¹ããŒã³ã¯å ã®dystinstoneã§ãã
è©æ¬ºãæé€ããã«ã¯ãTinyCã䜿çšããŸããTinyCã¯ãååãšããŠæé©åããæ¹æ³ãç¥ããŸããã
> cc_dry2.exe 500000000
ãŠãŒã¶ãŒæé= 55ç§
Dhrystoneã1åå®è¡ãããã€ã¯ãç§ïŒ0.1
ãã©ã€ã¹ããŒã³/ç§ïŒ9090909.0
DMIPS 5174.1
ãåèšãã¯ã€ã³ã¿ããªã¿ãã84åéããæé©åããŒãžã§ã³ã®2åé ããªããŸãã
Scimark2ãªã©ã®æµ®åå°æ°ç¹èšç®ãã¹ãïŒãããå€ããããšãã°ããã©ãŒãã³ã¹ããã±ãŒãžã§åŒãç¶ã䜿çšãããŠããŸãïŒ
ãµã€ããŒã¯ã®çµæ
ãã®ãã¹ããå®è¡ãããšã次ã®ããã«ãªããŸã
PythonããŒãžã§ã³ïŒ3.6.0ïŒ64ãããïŒãªããžã§ã³41df79263a11
Windows-7-6.1.7601-SP1ã«é¢ããã¬ããŒã
è«çCPUã®æ°ïŒ4
éå§æ¥ïŒ2017-01-19 03ïŒ03ïŒ35.583496
çµäºæ¥ïŒ2017-01-19 03ïŒ07ïŒ00.042133
### scimark_fft ###
äžå€®å€+-æšæºåå·®ïŒ863ããªç§+-4ããªç§
### scimark_lu ###
äžå€®å€+-æšæºåå·®ïŒ462ããªç§+-10ããªç§
### scimark_monte_carlo ###
äžå€®å€+-æšæºåå·®ïŒ247ããªç§+-2ããªç§
### scimark_sor ###
äžå€®å€+-æšæºåå·®ïŒ577ããªç§+--6ããªç§
### scimark_sparse_mat_mult ###
äžå€®å€+-æšæºåå·®ïŒ10.3 ms +-0.1 ms
Cãã¹ãã®å埩åæ°ã«ãããPythonã®åãçµæ
> gcc -mfpmath = sse -march =ãã€ãã£ã-O2
FFT ms * 50ïŒ2.06ïŒN = 1024ïŒ
SOR ms * 10ïŒ0.59ïŒ100 x 100ïŒ
ã¢ã³ãã«ã«ãïŒms * 1e5ïŒ1.51
ã¹ããŒã¹ãããmsïŒ0.79ïŒN = 1000ãnz = 50,000ïŒ
LU msïŒ0.32ïŒM = 100ãN = 100ïŒ
ãã³ãŒã-Pythonãã¹ãã¯1åã®ãã¹ãå®è¡ã®æéã瀺ããŸãããç°ãªãå埩åæ°ãå«ãŸããå ŽåããããŸããããšãã°ãããŒãªãšå€æã¯50åãšèŠãªãããCçµæã®ä¿æ°ã«åæ ãããŸãã
ããã§ãããŸããŸãªãã¹ãã®éãã¯1,500åã«éããå¯èœæ§ããããŸãïŒæ°ã«å ¥ããªãã®ã§ãçãããã»ã©å€§ããèŠããããããã¹ãã§ãšã©ãŒãèŠã€ãããæ¹ã¯å€§æè¿ã§ãïŒ
Cã§æé©åãšSIMDãç¡å¹ã«ãããšãçµæã3ã4åé ããªããŸã
FFT ms * 50ïŒ8.80ïŒN = 1024ïŒ
SOR ms * 10ïŒ0.66ïŒ100 x 100ïŒ
ã¢ã³ãã«ã«ãïŒms * 1e5ïŒ4.04
ã¹ããŒã¹ãããmsïŒ2.87ïŒN = 1000ãnz = 50,000ïŒ
LU msïŒ1.11ïŒM = 100ãN = 100ïŒ
DïŒ\ VSProjects \ Python36 \ python.exe pyperformance run -o py3z.json -b = scimark
PythonããŒãžã§ã³ïŒ3.6.0ïŒ64ãããïŒãªããžã§ã³41df79263a11
Windows-7-6.1.7601-SP1ã«é¢ããã¬ããŒã
è«çCPUã®æ°ïŒ4
éå§æ¥ïŒ2017-01-19 03ïŒ03ïŒ35.583496
çµäºæ¥ïŒ2017-01-19 03ïŒ07ïŒ00.042133
### scimark_fft ###
äžå€®å€+-æšæºåå·®ïŒ863ããªç§+-4ããªç§
### scimark_lu ###
äžå€®å€+-æšæºåå·®ïŒ462ããªç§+-10ããªç§
### scimark_monte_carlo ###
äžå€®å€+-æšæºåå·®ïŒ247ããªç§+-2ããªç§
### scimark_sor ###
äžå€®å€+-æšæºåå·®ïŒ577ããªç§+--6ããªç§
### scimark_sparse_mat_mult ###
äžå€®å€+-æšæºåå·®ïŒ10.3 ms +-0.1 ms
Cãã¹ãã®å埩åæ°ã«ãããPythonã®åãçµæ
> gcc -mfpmath = sse -march =ãã€ãã£ã-O2
FFT ms * 50ïŒ2.06ïŒN = 1024ïŒ
SOR ms * 10ïŒ0.59ïŒ100 x 100ïŒ
ã¢ã³ãã«ã«ãïŒms * 1e5ïŒ1.51
ã¹ããŒã¹ãããmsïŒ0.79ïŒN = 1000ãnz = 50,000ïŒ
LU msïŒ0.32ïŒM = 100ãN = 100ïŒ
ãã³ãŒã-Pythonãã¹ãã¯1åã®ãã¹ãå®è¡ã®æéã瀺ããŸãããç°ãªãå埩åæ°ãå«ãŸããå ŽåããããŸããããšãã°ãããŒãªãšå€æã¯50åãšèŠãªãããCçµæã®ä¿æ°ã«åæ ãããŸãã
ããã§ãããŸããŸãªãã¹ãã®éãã¯1,500åã«éããå¯èœæ§ããããŸãïŒæ°ã«å ¥ããªãã®ã§ãçãããã»ã©å€§ããèŠããããããã¹ãã§ãšã©ãŒãèŠã€ãããæ¹ã¯å€§æè¿ã§ãïŒ
Cã§æé©åãšSIMDãç¡å¹ã«ãããšãçµæã3ã4åé ããªããŸã
FFT ms * 50ïŒ8.80ïŒN = 1024ïŒ
SOR ms * 10ïŒ0.66ïŒ100 x 100ïŒ
ã¢ã³ãã«ã«ãïŒms * 1e5ïŒ4.04
ã¹ããŒã¹ãããmsïŒ2.87ïŒN = 1000ãnz = 50,000ïŒ
LU msïŒ1.11ïŒM = 100ãN = 100ïŒ
åæ¥ã«ã€ããŠã
Pythonãå€ãPHPãªã©ã®çŽç²ãªã€ã³ã¿ãŒããªã¿ãŒãèæ ®ããªãå Žåããã¹ãŠã®ã³ã³ãã€ã©ãŒãšã»ãšãã©ã®JITãã·ã³ã¯x2ããx4ã®ç¯å²ã«åãŸããJavaã§ã®æé«ã®JITã¯ææªã®å Žåã§ã2åæªæºã§ãããã³ã³ãã€ã«ãªãã·ã§ã³Cãæ£ãããããŸãã-FFTèšç®ããã°ã©ã ã¯ãäŸãã°ã5åé ããªããŸãã
äžæ¹ã ãããèŠããš ãJavascriptã®çŸä»£ã®äžçã§ã¯ãã€ã³ã¿ãŒããªã¿ãŒã¯ããªããæã£ãŠãããããã£ãšããªãã«è¿ãã§ãã
ãã®ä¿æ°ã枬å®ããæ¹æ³ã¯äžèšã«ç€ºããŠããŸãã
è©äŸ¡ã ãŸã å€ãã®èŠå ãå ã«ããã®ã§ãçŽç²ã«èšç®äžã®åé¡ã®çãåãé€ããŠããã®é床ä¿æ°ãéèŠã§ã¯ãªããšè©äŸ¡ããŸãã
bïŒããã°ã©ãã³ã°ãã©ãã€ã ã®åœ±é¿
ããšãã°ãC ++ /Dã ãããã®èšèªã¯ãOOPãšãã³ãã¬ãŒãã¡ã¿ããã°ã©ãã³ã°ãšãã2ã€ã®äž»èŠãªãã©ãã€ã ãè¿œå ããŸãã ç§ã¯åœŒãã«äºç²è«ãæããŸãã-ãããããã©ãŒãã³ã¹ã«ã©ã®ããã«åœ±é¿ãããèŠãŠã¿ãŸãããã
ã¡ã¿ããã°ã©ãã³ã°ã䜿çšããŸãã ãã³ãã¬ãŒãããã¯ããéšåçã«ãžã§ããªãã¯ïŒãªããžã§ã¯ãã¯ææªã®ã«ã«ãã«å±ããŸããïŒã ã€ã³ã©ã€ã³é¢æ°ãæ¶ããã³ãŒã«ã®æ倱ããªããªããããããã©ãŒãã³ã¹ãæãªãããšãªãããŸãã¯é床ãåäžãããããšãªãããã³ãã¬ãŒããã³ãŒãã«ãããã€ãããŸãã ã¢ããªã±ãŒã·ã§ã³ãè ããã®ã¯ãç°ãªãããŒã¿åã®åãã¢ã«ãŽãªãºã ã®ã³ããŒãçæããããããã³ãŒããè¥å€§åããããšã ãã§ãã
OOPã䜿çšãã ããã§ã®åé¡ã¯ããã¬ãŒã ã¯ãŒã¯ããã¬ã³ãºãåãåºããšããã«ã圌ã¯ããªãã®ããã°ã©ã ã§äœ¿çšãããŠããªããŠããç¶èŠªããããããã³ãã¹ãŠã®èŠªrelativeãããã°ã©ã ã«åå ãããããã«ãæåŸ ãããŸãïŒãªã³ã«ãŒãšããŒãããŒããŒã¯ããããïŒã äžç·ã«ããã£ã¹ã¯ããèµ·åããæéãã¡ã¢ãªå ããã³ããã»ããµãã£ãã·ã¥å ã®å Žæãæ¶è²»ããŸãã ããã¯ãã¡ã¢ãªã®åŽé¢ã«ããããŸãã
ç§ã¯ã»ãšãã©å¿ããŠããŸãã-OOPã«å ããŠå°å ¥ãããããã€ãã®ãã¯ããã¯ãããšãã°ãäŸå€ããã®ä»ã®é«åºŠãªãã¯ããã¯ãå®å šã«ç¡æã§ã¯ãããŸããã
ã¢ã¹ãã¯ãã®æž¬å®æ¹æ³-Stepanovã®ãã¹ãããããã³ãŒã«ãå±éãããšãã«æ倧2åã®å éãšä»®æ³ã³ãŒã«ã§æ倧2ïŒ ã®æ倱ã瀺ããŸãããã³ãŒãã®è¥å€§åã®åœ±é¿ãè©äŸ¡ããã®ã¯éåžžã«å°é£ã§ãã以äžã®ã¡ã¢ãªã¢ã¹ãã¯ããåç §ããŠãã ããã
ãã®é床ä¿æ°ã®è©äŸ¡ã¯ãåãã«è¶³ããªããã®ããç®ç«ã€ãã®ãŸã§ãããŸãã
cïŒãã€ãã³ãŒããã·ã³ïŒBCVMïŒ
ãããã¯ããã·ã³ã³ãŒãã³ã³ãã€ã©ãšã€ã³ã¿ãŒããªã¿ã®éã®ããã©ãŒãã³ã¹ã®çãäžã«ãããæåã«è¿ããã®ã§ãã
ããã§ãäžéãã€ãã³ãŒããJITãŸãã¯AOTã«ãã£ãŠã³ã³ãã€ã«ããããã解éããããã«ããããããéãã¯éèŠã§ãã BCVMãå¥ã®èšèªçšã«èšèšãããŠããŠãã³ãŒãã®äžéšããã®ãã·ã³ã®Piã³ãŒãã«å€æã§ããªãå Žåã«ãã倧æåãšå°æåãæ··åšããå¯èœæ§ããããŸãã
ãããã®å ŽåããããŒãæéãŸãã¯ã¡ã¢ãªã®ããããã§æ¯æããŸãã ããšãã°ãJava JITã¯çŽ100MBã®ã¡ã¢ãªãå¿ èŠãšããŸãããããã¯äžå¯æ¬ ã§ãããçµæã®ã³ãŒãã¯éåžžã«é«éã§SIMDã䜿çšããŸãïŒå æ¥TFTã«é¢ããèšäºã§ãã¹ããããŸããïŒ
枬å®æ¹æ³-ãã¹ãã䜿çšããŸããå€ãã®å Žåãã€ã³ã¿ãŒãããäžã§æ¬¡ã®ãããªãã®ãæ¢ããŸãã
ãã®é床ä¿æ°ã®è©äŸ¡-JITãè¯ãå Žåã¯éèŠã§ã¯ãããŸããããã¡ã¢ãªã®åŽé¢ã¯ãã©ã¹ã§ããããã€ããã·ã³ãã€ã³ã¿ãŒããªã¿ãŒãŸãã¯ä»ã®èª°ãã®å Žåã¯æ²ããããªã
ã¡ã¢ãªã®åŽé¢
aïŒã¹ã¿ããã³ã°
-è²»çšã¯ããããŸãããåçã¡ã¢ãªã®ç®¡çè ãžã®ã¢ããŒã«ã¯ãå€ãã®å Žåããã§ã«ã·ã¹ãã ã³ãŒã«ãåŒãåºããŸãã ã¬ããŒãžã³ã¬ã¯ã¿ãŒãšã¡ã¢ãªã®æçåãšçžãŸã£ãŠã幎äžç¡äŒã®ã·ã¹ãã ã§ã¯åé¡ã«ãªãå¯èœæ§ããããŸãã
èšèªã§ããŒãã䜿çšããã«äžæçãªããŒã«ã«ãªããžã§ã¯ããäœæã§ããå Žåã¯ãã¡ãªããããããŸãã
ãã¹ãã§æž¬å®ãããšãããèªäœã¯å°ãè²»çšãããããŸããã以äžã®åŽé¢ãåŒãåºãããšãã§ããŸãã
bïŒã¬ããŒãžã³ã¬ã¯ã¿ãŒïŒGCïŒ
-ãããåå¿è ã«ãšã£ãŠã®ç¥çŠãªã®ãããããšãã倧ããªãã®ãã«ãšã£ãŠã®åªããªã®ãã¯æ確ã§ã¯ãããŸããããæã«ã¯æŠããªããã°ãªããªãã®ã§ããã€ãã¹ã®èŠå ã§ãã
ãã¹ãã«ãã枬å®ã¯é£ãããBCVMããŒã«ã«ããGCåäœã®è€éãªèšºæãå¿ èŠã§ãã
èŠå ã®è©äŸ¡-倧èŠæš¡ã·ã¹ãã ã®å Žåãäºæž¬ã§ããªãé倧ãªé 延ãçºçããå¯èœæ§ããããŸãã
cïŒåçããŒãã£ã³ã°
ããã°ã©ã ã§æ°ãããŠã£ã³ããŠãéããªã©ãæ°ããã¯ã©ã¹ãèµ·åãããšã2ã€ã®ããšãèµ·ãããŸã-ãã·ã³ã³ãŒãã®å Žåã¯ãªã³ã¯ãããã³ãŒãããBCVMã®å Žåã¯ãã¬ãŒã ã¯ãŒã¯ãããŒãããå¿ èŠããããŸã-ïŒOOPãšãã®ãã¹ãŠã®èŠªé¡ã®æ¯ãèŠãŠïŒããŠã³ããŒãããã³ãŒãã§JITãå®è¡ããŸã
å®éã«BCVMã確èªããŸã-ç°¡åãªãã¹ããå®è¡ã§ããŸã-ãã¡ã€ã«ã®ããŒããå®è¡ããã€ã³ã¿ãŒãã§ã€ã¹ãéäžçã«ç»ããŸã-ãããŠãããã°ã©ã ã¯ã¹ã¯ããé床ã§åäœããŸãã
å®å šãªãã¹ãã¯å°é£ã§ããããŒãæéã®ã¿ã枬å®ããããã°ã©ã ã®æœåšçãªæ倧é£æ¬²-Linuxã®VSZã¡ã¢ãªã®ãµã€ãºãšWindowsã®ãå°çšä»®æ³ã¡ã¢ãªãã«ãŠã³ã¿ã調ã¹ãã®ã¯ç°¡åã§ãã ããå°ã圹ç«ã€ã®ã¯ãããŒãããŒãžãã©ãŒã«ãã®çµ±èšã調ã¹ãããšã§ãã
åé¡ã¯å®äŸ¡ãªã¡ã¢ãªãšããªããŒãã®éã«ãã£ãŠè§£æ±ºãããããã«æããŸããã1ã€ã®ããã°ã©ã ãæ°åMBãäœåã«æ¶è²»ããå Žåãå žåçãªã·ã¹ãã ã§ã¯ããããæ°ååãããŸãã
圱é¿è©äŸ¡-äºæž¬äžå¯èœãªé 延ã®å¯èœæ§ã
dïŒCPUãã£ãã·ã¥
ããã°ã©ã ã ãã§ãªããããå€ãã®ã³ãŒããå®è¡ãããããŒã¿ãåŠçãããã»ã©ãããã»ããµãã£ãã·ã¥ãµã€ãºã®åœ±é¿ã匷ããªããŸãã ããã«ãå€æ°ã®ãã³ãã¬ãŒããšãžã§ããªãã¯ãããã³JITã«ãã£ãã·ã¥ãå¿ èŠã«ãªããŸãã
ãã¹ã-åãããã°ã©ã ãç°ãªãçš®é¡ã®ãã£ãã·ã¥ãµã€ãºã§åãã¿ã€ãã®ããã»ããµã§å®è¡ããå¿ èŠããããŸãããããã¯èª°ããå©çšã§ããããã§ã¯ãããŸããã
圱é¿-è©äŸ¡ãé£ããã ãã®èšäºã§ã¯ããã£ãã·ã¥å ã®ããŒã¿ãããŒã«ã©ã€ãºãããšãé床ãåäžããããšããããšäž»åŒµããŠããŸãã
çŸå®äžçã®åŽé¢
aïŒã·ã¹ãã ã³ãŒã«
ç°ãªããã©ãããã©ãŒã ã§ã¯ãã·ã¹ãã ã³ãŒã«ã®ã³ã¹ããç°ãªãå ŽåããããŸããããšãã°ããã¥ãŒããã¯ã¹ãã¹ã¬ããã®äœæãªã©ã§ãã ãããã£ãŠãé床ã®å·®ã¯ããã®èŠå ã®ããã«ã®ã¿çºçããå ŽåããããŸãã æè¿ã®Habré ã®äŸã® 1ã€ã
枬å®-ç°ãªããã©ãããã©ãŒã ã§ã®ãã¹ãã 圱é¿è©äŸ¡-ç¹å®ã®ã¿ã¹ã¯ãé€ããéèŠã§ã¯ãªãããã°ã©ãã³ã°èšèªã®éžææ¹æ³ã«ã€ããŠã
bïŒæœè±¡çãªããã©ãŒãã³ã¹ã¯ã©ãã»ã©éèŠã§ããïŒ
ã»ãšãã©ã®å Žåã䜿çšããå¿ èŠãããå®éã®ããŒããŠã§ã¢ã¯åžžã«äœéã§ãã ãŸãã¯ããŠãŒã¶ãŒã®åå¿ã«ååãªé床ã§ãã ãŸãã¯ãé 延ã®ããã«ãµã€ããååã«èšªåãããŠããŸããã
cïŒéã®åœ±é¿
ãããããARMããã»ããµã䜿çšããŠããŠãæµ®åå°æ°ç¹ã®åé¡ããã¹ãŠãããŸãã
ãããããè€éãªã¢ã«ãŽãªãºã ã«å¯Ÿå¿ã§ããªãå³ããã¡ã¢ãªå¶éããããŸãã
ãããããããã¯ãŒã¯ãé ããäžå®å®ã§ãã
ãããªã¢ã¯ã»ã©ã¬ãŒã¿ã¯ãæ©èœã®ç¹ã§éåžžã«ç¹æ®ãªå ŽåããããŸãã
ã¬ã€ã¢ãŠãã®äºåãã¹ããå¿ èŠã§ãã
圱é¿ã¯éåžžã«åŒ·ãå ŽåããããŸãã
è©äŸ¡-ããšãã°ãããã¯é»è©±ã®ããããªãŒã§ãããã¡ã¢ãªãšã®ã¬ãã«ãã«çµŠé»ããå¿ èŠããããŸãã
éèšèªçèŠå
ã¢ã«ãŽãªãºã ããã¹ãŠã決å®ããŸãã ããšãã°ãSQLã¯èšèªã®èšç®ç¹æ§ã®ç¹ã§ã¯å€±ãããŸãïŒããã¯éåžžã®ã€ã³ã¿ãŒããªã¿ãŒã§ãïŒãããã®åªããæ°åŠããŒããŠã§ã¢ãšé·ãããŒã¿ã¢ã¯ã»ã¹æéã®ããã«ãå šäœçã«è¯å¥œã«èŠããŸãã ãã ããç¹å®ã®ã±ãŒã¹ã§ã¯ãé床ã«äžè¬åãããSQLã¢ãããŒãã§ã¯ãM / CacheãNoSQLãœãªã¥ãŒã·ã§ã³ãªã©ã®çŽæ¥çãªããã²ãŒã·ã§ã³ã倱ãããŸãã
ãªããããªã©ã€ãã©ãªã¯ãç¹å®ã®èšèªã®æ¬ ç¹ã軜æžããŸããã¿ã¹ã¯ãå®äºããã®ã«ãããæéã®å€§éšåãå ããèããªãããã«ããŸãããããã¯æ°åŠã©ã€ãã©ãªã§ãããã»ãšãã©ã®å Žåãã©ã³ã¿ã€ã ã©ã€ãã©ãªã§ãã
ãã¹ããšè©äŸ¡-質ã®é«ãæè²ã®ã¿ããããã§ã¢ã«ãŽãªãºã ãç解ããã®ã«åœ¹ç«ã¡ãŸãã
ãã¥ãŒãã³ãã¡ã¯ã¿ãŒã®åŽé¢
èšèªã®ç¡ç¥ãããã«æ£ç¢ºã«æžãã®ãé¢åãé«ãããæœè±¡åºŠã¯ãã¹ãŠã®é¢ã§äžååãªæ±ºå®ã«ã€ãªãããŸã-ããšãã°ãããŒã¿æ§é ãåç·šæãããããæšæºã®ã€ãã¬ãŒã¿ã䜿çšããŠã¢ã¬ã€ãŸãã¯ããŒã¿ããŒã¹å šäœãå埩ããæ¹ãç°¡åãªå ŽåããããŸãã
ç¡éã«å€ãã®äŸããããŸãã
ãããŠãããã§äœãããããšãææ¡ãããŠããŸããïŒ
æåã®çãã¯äœããããŸããã äœæ¥å¶éãç¶æ¿ãããã³ãŒãããŸãã¯åã«çµéšäžè¶³ã«å¶çŽãããŠããå Žåã
2çªç®ã®çãã¯ã¢ã»ã³ãã©ãŒã§ã®æžã蟌ã¿ã§ããã·ã¹ãã ãšAPIã«ã¯ãã€ãã£ãããŒã«ã®ã¿ã䜿çšããŸãã
ããªããæ tooããããªããããã¯é£ããããŸãããããŠããªãã«ã¯éžæè¢ããããŸã-ç§ã¯ããã°ã©ããŒã®æ¥œåããç§ãŸã§ã®æ¬¡ã®äžé£ã®ã¹ããããæäŸããŸãïŒ
NULL Cã䜿çšãã Pure Cã¯ãã¡ã¢ãªå ã®ã©ã³ã¿ã€ã ã©ã€ãã©ãªïŒlibcïŒã®ãµã€ãºã ãããã°ã©ã ãå¢ãããææ°ã®ãªããã£ãã€ã¶ãŒã¯å®è¡å¯èœã³ãŒããæãªããŸããã
å®éãCãåãå¿ èŠã¯ãããŸãã-ã³ã³ãã€ã«ãããèšèªã¯ããªãã®å¥œã¿ã«åã£ãŠããŸã-ADAãModulaãOberonãããã«Pascal / Delphiãã§ããã°æé©å
-1ã ã¡ã¿ããã°ã©ãã³ã°ã䜿çšããŸãã ãã³ãã¬ãŒãããã¯ããäžéšãžã§ããªãã¯ïŒOOPã¯ãã§ã«ææªã®ã«ã«ãã«å±ããŸããïŒã ãã³ãã¬ãŒãã¯ãããã©ãŒãã³ã¹ãæãªãããšãªãã³ãŒãã«ãããã€ãããŸãã ãããã®äœ¿çšãè ããã®ã¯ãç°ãªãããŒã¿åã®åãã¢ã«ãŽãªãºã ã®ã³ãŒãã®ã³ããŒãçæããããããã³ãŒããè¥å€§åããããšã ãã§ãã
-2ã ã³ã³ãã€ã«æžã¿ãªããžã§ã¯ãèšèªC ++ãDãRustãGoã䜿çšããŸãã äœããããªã«æªãã®ïŒ äžæ¹ã§ã¯ããªããžã§ã¯ãã®ãã¡ãã·ã§ã³ã¯ãã§ã«ã©ãã§ãéçšããŠãããå€ãã®å°å³ãªéçºè ã¯ããªããžã§ã¯ãã¢ãããŒããæ¹å€ããŠããŸãããéçºã®æ±ºå®çãªå©ç¹ã¯åŸãããŸããã äžæ¹ãå®èšŒæžã¿ã®å€§èŠæš¡ãªæ £ãããã¬ãŒã ã¯ãŒã¯ã åé¡ã¯ãããã°ã©ã ã§äœ¿çšãããŠããªãå Žåã§ããã»ãšãã©ã®ãã¬ãŒã ã¯ãŒã¯ã®ãªããžã§ã¯ãããªã³ã¯ãããããšã§ãã ãã£ãšãå®è¡å¯èœãã¡ã€ã«ã10ã¡ã¬ãã€ããè¶ ããŸããã ãããã®ã¡ã¬ãã€ãã¯ããã£ã¹ã¯ãã¡ã¢ãªãããã³ããã»ããµãã£ãã·ã¥ãå æããŸãã é¢æ°åŒã³åºãã®ãªãŒããŒãããã¯æ°ããŒã»ã³ãã§æž¬å®ãããŸãããããã»ããµãŒã®ãã£ãã·ã¥å æçã®åœ±é¿ã枬å®ããããšã¯å°é£ã§ãã
-1024ã éèš³èšèªã PHPãCPythonãäžéšJavascriptã 圌ãã®ãããã§ããã©ãŠã¶ã»ãã·ã§ã³ã¯100ã¡ã¬ãã€ããè¶ ãã100åã®èšç®é床ã®äœäžã¯æ£åžžãªããšã§ãã
-ãã€ã ä»®æ³ãã·ã³ã ãããã¯ã.NETãã©ãããã©ãŒã ãŸãã¯Javaãã©ãããã©ãŒã ã«åºã¥ãäžéãã€ãã³ãŒããæã€èšèªã§ãããŸããPyPyãšV8ãããã«å«ããããšãã§ããŸãã ããªãã¯ãã€ãããªããšäžç·ã«ãã€ããã·ã³ãéãã§ããŸã-ããã¯ãã£ã¹ã¯äžã§ããªããšäžç·ã«ãããã¯ã¡ã¢ãªå ã§ããªããšäžç·ã§ãã ãã ãããã¹ããä¿¡ããŠããå Žåããã¹ãŠãã»ãŒæ£åžžã§ããããã«èŠããŸã-èšç®ã®æ倱ã¯æ°åããŒã»ã³ããææªã®å Žåã¯æ倧100ïŒ ã§ãã ååãšããŠããã¹ãã®ã¿ãä»®æ³ãã·ã³èªäœã®ããŠã³ããŒãé床ãèæ ®ããŸããã ãããŠãããã¯ã¡ã¢ãªãã¡ã¢ãªããããŠåã³ã¡ã¢ãªãæ°åããã³æ°çŸã¡ã¬ãã€ãã§ãã
éçºè èªèº«ããã®åé¡ãç¥ã£ãŠããããã€ãã£ãã³ãŒããžã®ã³ã³ãã€ã«ã®æ¹åã«åãã£ãŠããŸãã ããã¯ãAndroidã®DalvikaãMicrosoftã®.NET Nativeã®ä»£ããã«ARTã§ãã
PSããŠãæåŸã®äŸãšããŠãæ©èœã䌌ãŠãã3ã€ã®ãŠãŒã¶ãŒããã°ã©ã ãç®ã®åã«ãããŸãã
1ã€ã¯C ++ / Qt / Webkitã§æžãããŠããŸã
CïŒ.NET 4.5ã®å¥ã®
Python3 / wxã®3çªç®
以äžã¯ããããã®äžã§æãå¿çæ§ã®é«ããã®ã§ã-Pythonã§ã¯ãããããããã§ã¯æãé ãã§ãã
çµè«-å€ãã®åŽé¢ãããã1ã€ã ããèæ ®ããããšã¯åœ¹ã«ç«ããªãã