Skip to content
  • Kouhei Yanagita's avatar
    803a0726
    Improve performance of Integer#ceildiv · 803a0726
    Kouhei Yanagita authored
    This patch is suggested by nobu.
    
    Benchmark result:
    
    ```
    require 'benchmark'
    
    n = 10 ** 7
    
    Benchmark.bm do |x|
      x.report("Fixnum/Fixnum") { a, b = 5, 2; n.times { a.ceildiv(b) } }
      x.report("Bignum/Bignum") { a, b = 10**100, 10**99 - 1; n.times { a.ceildiv(b) } }
      x.report("Bignum/Fixnum") { a, b = 10**100, 3; n.times { a.ceildiv(b) } }
    end
    ```
    
    Original:
    
    ```
           user     system      total        real
    Fixnum/Fixnum  3.340009   0.043029   3.383038 (  3.384022)
    Bignum/Bignum  8.229500   0.118543   8.348043 (  8.349574)
    Bignum/Fixnum  8.328971   0.097842   8.426813 (  8.426952)
    ```
    
    Improved:
    
    ```
           user     system      total        real
    Fixnum/Fixnum  0.699140   0.000961   0.700101 (  0.700199)
    Bignum/Bignum  5.076165   0.083160   5.159325 (  5.159360)
    Bignum/Fixnum  5.548684   0.115372   5.664056 (  5.666735)
    ```
    803a0726
    Improve performance of Integer#ceildiv
    Kouhei Yanagita authored
    This patch is suggested by nobu.
    
    Benchmark result:
    
    ```
    require 'benchmark'
    
    n = 10 ** 7
    
    Benchmark.bm do |x|
      x.report("Fixnum/Fixnum") { a, b = 5, 2; n.times { a.ceildiv(b) } }
      x.report("Bignum/Bignum") { a, b = 10**100, 10**99 - 1; n.times { a.ceildiv(b) } }
      x.report("Bignum/Fixnum") { a, b = 10**100, 3; n.times { a.ceildiv(b) } }
    end
    ```
    
    Original:
    
    ```
           user     system      total        real
    Fixnum/Fixnum  3.340009   0.043029   3.383038 (  3.384022)
    Bignum/Bignum  8.229500   0.118543   8.348043 (  8.349574)
    Bignum/Fixnum  8.328971   0.097842   8.426813 (  8.426952)
    ```
    
    Improved:
    
    ```
           user     system      total        real
    Fixnum/Fixnum  0.699140   0.000961   0.700101 (  0.700199)
    Bignum/Bignum  5.076165   0.083160   5.159325 (  5.159360)
    Bignum/Fixnum  5.548684   0.115372   5.664056 (  5.666735)
    ```
Loading