рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рдж , рдЬреЛ рдкрд┐рдЫрд▓реЗ рд░рд┐рд▓реАрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ OpenJDK 7u2 рдкрд░ 3 рдмрд╛рд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рдВрд╕реНрдХрд░рдг 1.7 рдореЗрдВ JRuby рдХреЗ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред
2009 рдореЗрдВ JRuby рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рдордВрджрддрд╛ рдФрд░ рд▓реЛрд▓реБрдкрддрд╛ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╢реВрдЯрдЖрдЙрдЯ рд╕реЗ
рдРрд╕реЗ рдЖрдВрдХрдбрд╝реЗ, рдореИрдВрдиреЗ JRuby рдХреЛ рдПрдХ рдФрд░ рдореМрдХрд╛ рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рддреБрд▓рдирд╛ рдпрд╛ рддреЛ рдорд╛рдк рдХреА рд╕рдЯреАрдХрддрд╛ рдпрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╡реНрдпрд╛рдкрдХрддрд╛ рдХрд╛ рдвреЛрдВрдЧ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ JRuby YARV рдиреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдкрдХрдбрд╝рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдзреНрдпрд╛рди,
рд╕реНрдерд╛рдкрдирд╛
sudo pacman -Syu # рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
sudo sudo pacman -S jdk7-openjdk apache-ant # put jre7-openjdk-7.b147_2.0-4 рдФрд░ рдЕрдкрд╛рдЪреЗ рдЪреАрдВрдЯреА
rvm jruby-head ruby-1.9.3p0 # JRuby (75MB тАЛтАЛOMG!) рдФрд░ YARV 1.9.3 рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
rvm рдЬреБрд░рд╛рдм-рд╕рд┐рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рд░реВрдмреА --version #jruby 1.7.0.dev (рд░реВрдмреА-1.8.7-p352) (2011-12-22 3d34ca5) (OpenJDK рдХреНрд▓рд╛рдЗрдВрдЯ VM 1.7.0_147-icedtea) [linux-i8686- рдЬрд╛рд╡рд╛]
рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рдордп
рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХрдо рд░реБрдЪрд┐ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд╣реА рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд░реВрдмреА рдЖрдорддреМрд░ рдкрд░ рдХрд░рддреА рд╣реИ:
- рдорд╛рдирдХреАрдХрд░рдг;
- рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ;
-
рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ ;
- рдорд╛рд░реНрдЧред
рд╣рдо рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкреЗрдВрдЧреЗред рд╣рдореЗрдВ
рдХреИрдВрдкрд░ рдХреА рдЬрд░реВрд░рдд
рд╣реЛрдЧреАрд╕реБрдбреЛ рд╕реВрдбреЛ рдкреИрдХреНрдореИрди -рдПрд╕ рдХреИрдВрдкрд░рдл
рд░реВрдмреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо рдЪрд▓реЗрдВрдЧреЗ:
рдордгрд┐ рд╕реНрдерд╛рдкрд┐рдд sinatra рд╕реНрд▓рд┐рдо
рд╕рд░рд▓ рдЖрд╡реЗрджрди:
#! / usr / bin / env рдорд╛рдгрд┐рдХ
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ 'рд░реВрдмреАрдЬ'
'рдкрд╛рдкрд╛рддреНрд░рд╛' рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
'рд╕реНрд▓рд┐рдо' рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
'/' рдХрд░реЛ
рдкрддрд▓рд╛: рд╕реВрдЪрдХрд╛рдВрдХ
рдЕрдВрдд
'/ 2' рдХрд░рддреЗ рд╣реИрдВ
рд╕реНрд▓рд┐рдо: рдЯрд╛рдЗрдВрдбреЗрдХреНрд╕
рдЕрдВрдд
__END__
@@ рд▓реЗрдЖрдЙрдЯ
рдПрдЪрдЯреАрдПрдордПрд▓
== рдЙрдкрдЬ
@@ рд╕реВрдЪрдХрд╛рдВрдХ
div.title рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛ !!!
@@ рдЯрд╛рдЗрдВрдбреЗрдХреНрд╕
div.title рдЕрд▓рд╡рд┐рджрд╛ рджреБрдирд┐рдпрд╛ !!!!!
WEBrick рдкрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдирд╛ рдПрдХ рдмрдбрд╝реА рдЧрд▓рддреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреА рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рднреАред
рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:
рдорд╛рдгрд┐рдХ config.ru
рдЯрд╛рдЗрдо рдХреИрдВрдЯрд░рдлрд╝ - рд╣реЙрдЧ - рдСрдмреНрдЬрд░реНрд╡рд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ --рдкреЛрд░реНрдЯ рекрелремn-num-con релрежреж --ra релрежреж
рдкрд░рд┐рдгрд╛рдо
JRuby
рдЕрдиреБрд░реЛрдз рджрд░: 5.7 req / s (175.9 ms / req)
рд╡рд╛рд╕реНрддрд╡рд┐рдХ 1m14.581s
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 0m2.497s
sys 1m7.232s
YARV
рдЕрдиреБрд░реЛрдз рджрд░: 55.9 req / s (17.9 ms / req)
рд╡рд╛рд╕реНрддрд╡рд┐рдХ 0m8.960s
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 0m0.203s
sys 0m8.433s
рдирд┐рд╖реНрдХрд░реНрд╖
рдореИрдВ JRuby рдХреЗ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЖрд░рд╛рдорджрд╛рдпрдХ рдирд╣реАрдВ рд╣реИрдВред
рд╡рд╣рд╛рдБ рднреА
рд╡реИрдХрд▓реНрдкрд┐рдХ рддреБрд▓рдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ
JRuby рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
YARV рд╕реЗ 3 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИ ред
рдореБрдЭреЗ рд╕рд╣реА рдХрд░реЗрдВ, рдХреГрдкрдпрд╛, рдЕрдЧрд░ рдореИрдВ рдХрд╣реАрдВ рдЧрд▓рдд рд╣реВрдВред
рдпреБрдкреАрдбреА:
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ JRuby рдореЗрдВ рдЪрд╛рд▓рд╛рди рдХрд┐рдП рдЧрдП рд╕реБрдзрд╛рд░ рдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
jruby -J-XX: + UseConcMarkSweepGC -J-XX: -UseParNewGC -Xcompile.invokedynamic = false -v config.ru
рдЕрд╕рд▓реА 0m33.078s
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 0m0.930s
sys 0m31.248
рд╕реБрдзрд╛рд░ рджреЛ рдмрд╛рд░ рдЬрд┐рддрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди YARV рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 3 рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реИред рдХреЛрдИ рдФрд░ рд╡рд┐рдЪрд╛рд░?