Issue #6972 has been updated by Glass_saga (Masaki Matsushita).


???????????¨ã?????????????¾ã????????
----------------------------------------
Feature #6972: ??¹å????½ä»¤opt_empty??®è¿½???
https://bugs.ruby-lang.org/issues/6972#change-29753

Author: Glass_saga (Masaki Matsushita)
Status: Closed
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: YARV
Target version: 


YARV??®ç?¹å????½ä»¤opt_empty??®è¿½?????????æ¡??????¾ã?????
opt_empty???recv.empty???«å¯¾å¿?????????¹å????½ä»¤??§ã??opt_size???opt_length??¨å????????String???Array???Hash?????¬ã?·ã?¼ã????§ã???????´å????«æ????¹ã?§ã?????

次ã?®ã????³ã???????¼ã?¯ã??opt_empty????????¹ã?«ã???????´å????®ã???????©ã?¼ã????³ã?¹ã??æ¯???¹ã?¾ã????????

require 'benchmark'

Ary = []
Times = 10_000_000

Benchmark.bm do |x|
  x.report do
    Times.times { Ary.empty? }
  end
end

trunk(r36890):
       user     system      total        real
   1.070000   0.000000   1.070000 (  1.086783)

proposed:
       user     system      total        real
   0.730000   0.000000   0.730000 (  0.745782)

?????????1.46?????«é????????????????¦ã?????äº??????????????¾ã?????

ç´?1.46?????®é???????????ä»???®ç?¹å????½ä»¤??¨æ??è¼??????¦æ????¹ã?§ã??????????©ã????????調ã?¹ã????ºã?«ã??opt_empty??«ä¼¼?????¹å????½ä»¤??§ã?????opt_size??¨æ??è¼??????¦ã?¿ã?¾ã????????
ä¸?è¨???¨å?????trunk???r36890??§ã??compile.c???1874è¡????(iseq_specialized_instruction()???opt_size???使ç?¨ã???????¨å????§ã??)?????³ã?¡ã?³ã????¢ã?¦ã????????
opt_size?????¡å?¹ã?«ã?????ä¸?è¨???®ã????³ã???????¼ã?¯ã??Ary.empty????Ary.size??«ç½®?????????????????®ã??å®?è¡??????¦æ??è¼?????????¨ã????????以ä????®ã???????«ã?ªã????¾ã????????

??¹å????½ä»¤opt_size?????¡å?¹ã?«ã???????´å??:
      user     system      total        real
   1.060000   0.000000   1.060000 (  1.061210)

?????¹ã?«ã???????´å??:
       user     system      total        real
   0.750000   0.000000   0.750000 (  0.765943)

??»ã?¼å??æ§???®ç???????¨ã?ªã????¾ã????????
opt_empty??¯ã????¹å????½ä»¤??¨ã????¦å¦¥å½???ªå?¹æ?????????????¨è?????????????§ã?????

recv.empty???¯ã????¤ã????¬ã?¼ã?·ã?§ã?³ã?®ä¸­??§ç?¨ã???????????????????ªã?±ã?¼ã?¹ã??å¤????(è¦?ç´????empty??ªã??ä½?????????? or empty??ªã??ä½?????????ªã???????ªã??)???æ¯?è¼??????????????¼ã?°ã??????????¡ã?½ã???????§ã???????¨æ???????¾ã?????
?????¤ã????¡ã?½ã???????¼ã?³å?ºã????®ã?³ã?¹ã????«å¯¾?????¦å??ä½???®å?¦ç?????å°????????®ã?§ã????°ã????ªç?¹å????½ä»¤??¨ã????¦å??¥ã?????価å?¤ã??????????¨æ???????®ã?§ã???????????????????§ã??????????????


-- 
http://bugs.ruby-lang.org/