Project

General

Profile

Feature #15976

Add Array#overlap? for whether the intersection of 2 arrays is non empty?

Added by fcheung (Frederick Cheung) over 1 year ago. Updated about 1 year ago.

Status:
Feedback
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:93487]

Description

This is semantically equivalent to (ary1 & ary2).any?, but more efficient and makes the intent more obvious.

For example bundler checks whether the list of requested groups and the list of groups for a dependency has any overlap - it doesn't care what the overlap is, as long as it is non empty

In my personal projects we've found this to be a bottleneck when the arrays are large and where intersections are likely - !(ary1 & ary2).empty? keeps searching for all of the intersection even after we've found the first one, & creates extra garbage because of the intermediate array.

See https://github.com/ruby/ruby/pull/2260


Files

2260.patch (7.9 KB) 2260.patch fcheung (Frederick Cheung), 07/02/2019 09:02 PM

Related issues

Is duplicate of Ruby master - Feature #15198: Array#intersect?OpenActions

Also available in: Atom PDF