This should also speed up DateTime. This will not help 1.9 performance.
The attached file is based on MRI 1.8.6 rational.rb.
> ruby rational_performance.rb user system total real test_it 32.930000 3.030000 35.960000 ( 35.971832) test_it 33.840000 2.910000 36.750000 ( 36.758585) test_it ks_rational 29.110000 2.460000 31.570000 ( 31.572762)
Overview:
case x; when Foo; ...; end
is faster thanif Foo.kind_of?(x)
.- Avoid recuring on ephemeral objects.
- Avoid local variables, in-line expressions.
- Avoid
return
in tail position. - String interpolation:
"#{x}/#{y}"
is faster thanx.to_s + "/" + y.to_s
. - Implement
#-
,#zero?
,#nonzero?
natively. #abs
returns self if > 0.
MRI 1.8.7 patch to follow shortly.