From: matz@... Date: 2020-04-10T04:41:59+00:00 Subject: [ruby-core:97770] [Ruby master Feature#16428] Add Array#uniq?, Enumerable#uniq? Issue #16428 has been updated by matz (Yukihiro Matsumoto). Status changed from Open to Feedback You said, "I often need to check if an array have duplicate elements". But we cannot think of the real-world use-case. Could you elaborate on how to use the proposed `#uniq?` and its benefit? Matz. ---------------------------------------- Feature #16428: Add Array#uniq?, Enumerable#uniq? https://bugs.ruby-lang.org/issues/16428#change-84984 * Author: kyanagi (Kouhei Yanagita) * Status: Feedback * Priority: Normal ---------------------------------------- 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: