From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=3.0 tests=AWL,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 1DB501F66F for ; Thu, 5 Nov 2020 07:12:18 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 402101209D3; Thu, 5 Nov 2020 16:11:19 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id F20411209C5 for ; Thu, 5 Nov 2020 16:11:16 +0900 (JST) Received: by filterdrecv-p3iad2-64988c98cc-m8qxd with SMTP id filterdrecv-p3iad2-64988c98cc-m8qxd-19-5FA3A5B9-3A 2020-11-05 07:11:53.968235797 +0000 UTC m=+1073821.912285743 Received: from herokuapp.com (unknown) by ismtpd0051p1mdw1.sendgrid.net (SG) with ESMTP id fgjWr45KR_yucj9owcOeHw for ; Thu, 05 Nov 2020 07:11:53.878 +0000 (UTC) Date: Thu, 05 Nov 2020 07:11:53 +0000 (UTC) From: gamelinks007@gmail.com Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Redmine-MailingListIntegration-Message-Ids: 76586 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 17127 X-Redmine-Issue-Author: S_H_ X-Redmine-Sender: S_H_ X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: =?us-ascii?Q?hkhH+VYi3CHo0H3puLbdQ20XoWHmZIf5UShlDYZVe97vFc15ta4NyAQR45iz0d?= =?us-ascii?Q?JTBYNcOkb6hmSPPQnw2SKaHdcIo=2FvBjJ8iaXuU9?= =?us-ascii?Q?y0d52jX4czrWsP=2FKYehy9y0YORSlVa1zanEQCcY?= =?us-ascii?Q?vi8=2FHsXGgyJ=2FmCKCUdfd0H1U7VotzxDyHqzDnPm?= =?us-ascii?Q?6PJZWz5970XH9gJ1Kz4EY1+5fkZn+V8sDXAIbHk?= =?us-ascii?Q?AaRJWjU9D3K1w1J7Y=3D?= To: ruby-dev@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-dev X-Mail-Count: 50969 Subject: [ruby-dev:50969] [Ruby master Feature#17127] Some TrueClass methods are faster if implemented in Ruby X-BeenThere: ruby-dev@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: "Ruby developers \(Japanese\)" List-Id: "Ruby developers \(Japanese\)" List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: ruby-dev-bounces@ruby-lang.org Sender: "ruby-dev" Issue #17127 has been updated by S_H_ (Shun Hiraoka). recreate PR for marge `.rb` files https://github.com/ruby/ruby/pull/3737 ---------------------------------------- Feature #17127: Some TrueClass methods are faster if implemented in Ruby https://bugs.ruby-lang.org/issues/17127#change-88358 * Author: S_H_ (Shun Hiraoka) * Status: Open * Priority: Normal ---------------------------------------- Some TrueClass methods are faster if implemented in Ruby code. like this. ```ruby class TrueClass def to_s "true".freeze end alias_method :inspect, :to_s def |(bool) true end end ``` benchmark file: ```yaml benchmark: to_s: | true.to_s inspect: | true.inspect or: | true | false loop_count: 1000000 ``` benchmark result: ```bash sh@MyComputer:~/rubydev/build$ make benchmark/trueclass.yml -e COMPARE_RUBY=~/.rbenv/shims/ruby -e BENCH_RUBY=../install/bin/ruby # Iteration per second (i/s) | |compare-ruby|built-ruby| |:--------|-----------:|---------:| |to_s | 66.001M| 91.927M| | | -| 1.39x| |inspect | 70.464M| 97.220M| | | -| 1.38x| |or | 61.434M| 86.484M| | | -| 1.41x| ``` `COMPARE_RUBY` is `ruby 2.8.0dev (2020-08-20T04:24:55Z master 6509652c13) [x86_64-linux]`. `BENCH_RUBY` is ahead of `ruby 2.8.0dev (2020-08-20T04:24:55Z master 6509652c13) [x86_64-linux]`. Probably, inline method cache was able to speed up these methods. pull request: https://github.com/ruby/ruby/pull/3435 -- https://bugs.ruby-lang.org/