Feature #2561
closed
1.8.7 Patch reduces time cost of Rational operations by 50%.
Added by kstephens (Kurt Stephens) almost 15 years ago.
Updated over 13 years ago.
Description
=begin
This changes adds a specialize Fixnum#gcd and a tuned rational.rb.
Reduced overall time on Rational operations by > 50%.
user system total real
test_it 22.380000 2.140000 24.520000 ( 24.559388)
test_it ks_rational 17.870000 1.830000 19.700000 ( 19.687221)
test_it ks_rational + Fixnum#gcd 10.660000 0.000000 10.660000 ( 10.665765)
The patch will perform better with Fixnum#gcd on numeric.c but still is faster with only the rational.rb changes.
I have a version for 1.8.6 if someone wants it.
=end
Files
- Status changed from Open to Assigned
- Assignee set to knu (Akinori MUSHA)
=begin
Discuss in Ruby 1.8 first,
=end
=begin
New version:
Avoid additional method calls to Float(), call #to_f directly. Avoid Rational() when its clear that denominator will never be 1.
=end
=begin
Patches look fine to me. I'll handle this as soon as I can take the time, hopefully within a couple weeks.
I think it's better to have the C part as extension rather than putting Fixnum#gcd solely in the core,
so I'll make some layout changes to bring this in in the best shape for future maintainability.
=end
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
=begin
This issue was solved with changeset r26581.
Kurt , thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
=end
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0