[ruby-core:96288] [Ruby master Feature#16428] Add Array#uniq?

[email protected]
Newsgroups gmane.comp.lang.ruby.core
Message-ID <redmine.issue-16428.20191217132426.b2fadf9d48c202e0@ruby-lang.org>
Issue #16428 has been reported by kyanagi (Kouhei Yanagita).

----------------------------------------
Feature #16428: Add Array#uniq?
https://bugs.ruby-lang.org/issues/16428

* Author: kyanagi (Kouhei Yanagita)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
I propose Array#uniq?.

I often need to check if an array have duplicate elements.

This method returns true if no duplicates are found in self, otherwise returns false.
If a block is given, it will use the return value of the block for comparison.

This is equivalent to `array.uniq.size == array.size`, but faster.

```
% ~/tmp/r/bin/ruby -rbenchmark/ips -e 'a = Array.new(100) { rand(1000) }; Benchmark.ips { |x| x.report("uniq") { a.uniq.size == a.size }; x.report("uniq?") { a.uniq? } }'
Warming up --------------------------------------
                uniq    25.765k i/100ms
               uniq?    76.544k i/100ms
Calculating -------------------------------------
                uniq    278.144k (± 4.1%) i/s -      1.391M in   5.010858s
               uniq?    981.868k (± 5.1%) i/s -      4.975M in   5.081611s
```

I think the name `uniq?` is natural because Array already has `uniq`.

patch: https://github.com/ruby/ruby/pull/2762



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.