[#91458] [Ruby trunk Feature#4475] default variable name for parameter — matz@...
Issue #4475 has been updated by matz (Yukihiro Matsumoto).
3 messages
2019/02/07
[ruby-core:91420] [Ruby trunk Bug#15589] `Numeric#zero?` is much slower than `== 0`
From:
sawadatsuyoshi@...
Date:
2019-02-06 09:34:43 UTC
List:
ruby-core #91420
Issue #15589 has been reported by sawa (Tsuyoshi Sawada). ---------------------------------------- Bug #15589: `Numeric#zero?` is much slower than `== 0` https://bugs.ruby-lang.org/issues/15589 * Author: sawa (Tsuyoshi Sawada) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.6.1 * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- My understanding is the predicate method `Numeric#zero?` is not only a shorthand for `== 0`, but is also optimized for frequent patterns. If `zero?` is not faster than `== 0`, then it loses its reason for existence. However, According to benchmark on my environment, `number.zero?` is around 1.23 times to 1.64 times slower than `number == 0` when `number` is an `Integer`, `Rational`, or `Complex`. It is faster only when `number` is a `Float`. And with `number.nonzero?`, it is even worse. It is about 1.88 times to 4.35 times slower than `number != 0`, even with `Integer`. I think there is something wrong with this, and it should be possible to optimize these methods, which has somehow been missed. -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>