From: Charles Oliver Nutter Date: 2007-11-23T18:05:31+09:00 Subject: Re: Emulating a Groovy feature? Luke Melia wrote: > On Nov 21, 2007, at 2:47 PM, thefed wrote: > >> Begin-Rescue-End blocks tend to slow things down significantly - does >> JUST including rescue also take those penalties to speed? > > Sebastian Delmont did some benchmarking on this last year. > > http://www.notsostupid.com/blog/2006/08/31/the-price-of-a-rescue/ > > His conclusions: "Using rescue is not much more expensive than running > naked. In my tests in particular, it never was more than 5% slower. It > might even be cheaper than multiple tests." It slows down JRuby a bit more than Ruby 1.8, unfortunately, because of the way the JVM manages exception handling and operand stacks. But generally you won't notice it, since nontrivial code bodies will be quite a bit faster than 1.8. ~/NetBeansProjects/jruby-current $ jruby -J-server test.rb user system total real plain 0.493000 0.000000 0.493000 ( 0.493000) plain 0.474000 0.000000 0.474000 ( 0.474000) plain 0.222000 0.000000 0.222000 ( 0.222000) plain 0.220000 0.000000 0.220000 ( 0.220000) plain 0.219000 0.000000 0.219000 ( 0.219000) safe 0.431000 0.000000 0.431000 ( 0.431000) safe 0.338000 0.000000 0.338000 ( 0.337000) safe 0.320000 0.000000 0.320000 ( 0.320000) safe 0.317000 0.000000 0.317000 ( 0.316000) safe 0.319000 0.000000 0.319000 ( 0.319000) rescue 0.315000 0.000000 0.315000 ( 0.315000) rescue 0.313000 0.000000 0.313000 ( 0.313000) rescue 0.314000 0.000000 0.314000 ( 0.314000) rescue 0.312000 0.000000 0.312000 ( 0.312000) rescue 0.312000 0.000000 0.312000 ( 0.313000) ~/NetBeansProjects/jruby-current $ ruby test.rb user system total real plain 0.210000 0.000000 0.210000 ( 0.214133) plain 0.210000 0.000000 0.210000 ( 0.228721) plain 0.200000 0.000000 0.200000 ( 0.206997) plain 0.210000 0.000000 0.210000 ( 0.206290) plain 0.200000 0.010000 0.210000 ( 0.205982) safe 0.240000 0.000000 0.240000 ( 0.238373) safe 0.230000 0.000000 0.230000 ( 0.243327) safe 0.240000 0.000000 0.240000 ( 0.237573) safe 0.230000 0.000000 0.230000 ( 0.242121) safe 0.240000 0.000000 0.240000 ( 0.237385) rescue 0.230000 0.000000 0.230000 ( 0.238207) rescue 0.230000 0.000000 0.230000 ( 0.235387) rescue 0.230000 0.000000 0.230000 ( 0.234333) rescue 0.240000 0.000000 0.240000 ( 0.234938) rescue 0.230000 0.000000 0.230000 ( 0.240186) - Charlie