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.6 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 005111F66E for ; Tue, 25 Aug 2020 23:37:17 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id AC9031209EC; Wed, 26 Aug 2020 08:36:40 +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 496B01209EB for ; Wed, 26 Aug 2020 08:36:38 +0900 (JST) Received: by filterdrecv-p3mdw1-5b7978bb98-6j67b with SMTP id filterdrecv-p3mdw1-5b7978bb98-6j67b-19-5F45A0A3-46 2020-08-25 23:37:07.882921937 +0000 UTC m=+14790.222545039 Received: from herokuapp.com (unknown) by geopod-ismtpd-5-2 (SG) with ESMTP id EKmWbjBhSpSv_q7HDtLYeA for ; Tue, 25 Aug 2020 23:37:07.804 +0000 (UTC) Date: Tue, 25 Aug 2020 23:37:07 +0000 (UTC) From: sawadatsuyoshi@gmail.com Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 75524 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Bug X-Redmine-Issue-Id: 17030 X-Redmine-Issue-Author: marcandre X-Redmine-Sender: sawa 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?jFXA8Rt481sXUUIO9tYW1AJlMOZdNdlSw=2F5TfLCefGuL579CRpeiI+MdfjVJdG?= =?us-ascii?Q?N+5Khg31Z4YhkzPg2S6t1Bc2NFRIy0UpYJFWRVl?= =?us-ascii?Q?n=2FHhRLvPlgoVcz8er4K3P+JSvwGng5n9NMbQfOB?= =?us-ascii?Q?lymoNfRN=2FW161CdFztnOLiTts+rygNmZsFr4IgO?= =?us-ascii?Q?=2FyWtXbtHIEy1fckjQiRlsCsJdzoV+onqnVIm20=2F?= =?us-ascii?Q?HihjJiEqeGdh1MOCU=3D?= To: ruby-core@ruby-lang.org X-ML-Name: ruby-core X-Mail-Count: 99692 Subject: [ruby-core:99692] [Ruby master Bug#17030] Enumerable#grep{_v} should be optimized for Regexp X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #17030 has been updated by sawa (Tsuyoshi Sawada). I feel scivola20 (sciv ola)'s idea promising, but have a feeling that it is going to introduce the same kind of mess as when `"string"f` notation was introduced. People are going to need to write `/regex/f` all over the place. Just by analogy from the situation with strings, what about introducing the following pragma, which will make all regex literals on that page fast regex literals (i.e., `===` becomes `match?`)? ```ruby # boolean_regex_literal: true ``` And perhaps in the long run, Matz might want to make all regex literals work like that. ---------------------------------------- Bug #17030: Enumerable#grep{_v} should be optimized for Regexp https://bugs.ruby-lang.org/issues/17030#change-87183 * Author: marcandre (Marc-Andre Lafortune) * Status: Open * Priority: Normal * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- Currently: ```ruby array.select { |e| e.match?(REGEXP) } # about 3x faster and 6x more memory efficient than array.grep(REGEXP) ``` This is because `grep` calls `Regexp#===` which creates useless `MatchData` -- https://bugs.ruby-lang.org/