Skip to content
  • Nobuyoshi Nakada's avatar
    b4213a73
    [Feature #19839] Fix `Range#overlap?` for empty ranges · b4213a73
    Nobuyoshi Nakada authored
    Empty ranges do not overlap with any range.
    
    Regarding benchmarks, PR#8242 is significantly faster in some cases,
    but one of these two cases is a wrong result.
    
    |                           |ActiveSupport| PR#8242|built-ruby|
    |:--------------------------|------------:|-------:|---------:|
    |(2..3).overlap?(1..1)      |       7.761M| 15.053M|   32.368M|
    |                           |            -|   1.94x|     4.17x|
    |(2..3).overlap?(2..4)      |      25.720M| 55.070M|   21.981M|
    |                           |        1.17x|   2.51x|         -|
    |(2..3).overlap?(4..5)      |       7.616M| 15.048M|   21.730M|
    |                           |            -|   1.98x|     2.85x|
    |(2..3).overlap?(2..1)      |      25.585M| 56.545M|   32.786M|
    |                           |            -|   2.21x|     1.28x|
    |(2..3).overlap?(0..1)      |       7.554M| 14.755M|   32.545M|
    |                           |            -|   1.95x|     4.31x|
    |(2..3).overlap?(...1)      |       6.681M|  5.843M|   32.255M|
    |                           |        1.14x|       -|     5.52x|
    |(2...3).overlap?(..2)      |       6.676M|  5.817M|   21.572M|
    |                           |        1.15x|       -|     3.71x|
    |(2...3).overlap?(3...)     |       7.392M| 14.755M|   31.805M|
    |                           |            -|   2.00x|     4.30x|
    |(2..3).overlap?('a'..'d')  |       3.675M|  3.482M|   17.009M|
    |                           |        1.06x|       -|     4.89x|
    b4213a73
    [Feature #19839] Fix `Range#overlap?` for empty ranges
    Nobuyoshi Nakada authored
    Empty ranges do not overlap with any range.
    
    Regarding benchmarks, PR#8242 is significantly faster in some cases,
    but one of these two cases is a wrong result.
    
    |                           |ActiveSupport| PR#8242|built-ruby|
    |:--------------------------|------------:|-------:|---------:|
    |(2..3).overlap?(1..1)      |       7.761M| 15.053M|   32.368M|
    |                           |            -|   1.94x|     4.17x|
    |(2..3).overlap?(2..4)      |      25.720M| 55.070M|   21.981M|
    |                           |        1.17x|   2.51x|         -|
    |(2..3).overlap?(4..5)      |       7.616M| 15.048M|   21.730M|
    |                           |            -|   1.98x|     2.85x|
    |(2..3).overlap?(2..1)      |      25.585M| 56.545M|   32.786M|
    |                           |            -|   2.21x|     1.28x|
    |(2..3).overlap?(0..1)      |       7.554M| 14.755M|   32.545M|
    |                           |            -|   1.95x|     4.31x|
    |(2..3).overlap?(...1)      |       6.681M|  5.843M|   32.255M|
    |                           |        1.14x|       -|     5.52x|
    |(2...3).overlap?(..2)      |       6.676M|  5.817M|   21.572M|
    |                           |        1.15x|       -|     3.71x|
    |(2...3).overlap?(3...)     |       7.392M| 14.755M|   31.805M|
    |                           |            -|   2.00x|     4.30x|
    |(2..3).overlap?('a'..'d')  |       3.675M|  3.482M|   17.009M|
    |                           |        1.06x|       -|     4.89x|
Loading