使用了 Regexp#match? 的更快的正则表达式
:
require 'benchmark/ips'
Benchmark.ips do |bench|
EMPTY_STRING = ''
WHITESPACE = " \n\t\n "
CONTAINS_TEXT = ' hi '
PATTERN = /\A[[:space:]]*\z/
bench.report('Regexp#match?') do
PATTERN.match?(EMPTY_STRING)
PATTERN.match?(WHITESPACE)
PATTERN.match?(CONTAINS_TEXT)
end
bench.report('Regexp#match') do
PATTERN.match(EMPTY_STRING)
PATTERN.match(WHITESPACE)
PATTERN.match(CONTAINS_TEXT)
end
bench.report('Regexp#=~') do
PATTERN =~ EMPTY_STRING
PATTERN =~ WHITESPACE
PATTERN =~ CONTAINS_TEXT
end
bench.report('Regexp#===') do
PATTERN === EMPTY_STRING
PATTERN === WHITESPACE
PATTERN === CONTAINS_TEXT
end
bench.compare!
end
# gxgssww3.n77888.com,ww2.n77888.com,www.baidu.com,ww4.n77888.comgxgss
# >> Warming up --------------------------------------
# >> Regexp#match? 160.255k i/100ms
# >> Regexp#match 44.904k i/100ms
# >> Regexp#=~ 71.184k i/100ms
# >> Regexp#=== 71.839k i/100ms
# >> Calculating -------------------------------------
# >> Regexp#match? 2.630M (± 4.0%) i/s - 13.141M in 5.004929s
# >> Regexp#match 539.361k (± 3.9%) i/s - 2.694M in 5.002868s
# >> Regexp#=~ 859.713k (± 4.2%) i/s - 4.342M in 5.060080s
# >> Regexp#=== 872.217k (± 3.5%) i/s - 4.382M in 5.030612s
# >>
# >> Comparison:
# >> Regexp#match?: 2630002.5 i/s
# >> Regexp#===: 872217.5 i/s - 3.02x slower
# >> Regexp#=~: 859713.0 i/s - 3.06x slower
# >> Regexp#match: 539361.3 i/s - 4.88x slower
gxgadphttp://a2.att.hudong.com/72/89/01300001248577140184892180475_s.jpggxgadp
gxgaduhttp://ww2.n77888.comgxgadu
分享到:
相关推荐
If you don’t know what version to install and you’re getting started with Ruby, we recommend you use Ruby 2.4.X installers. These provide a stable language and a extensive list of packages (gems) ...
Ruby-2.4.5版本中,可能引入了一些新的特性、优化或bug修复。例如,它可能提高了垃圾回收的效率,增强了并发处理能力,或者修复了已知的安全问题。此外,该版本也可能对其他编程语言如Java、Python或Perl的互操作性...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
在我如何使用github搭建个人网站中有介绍如何安装使用
标题“2.4-3.0.rubygems.rar”暗示了这个压缩包可能包含了Ruby Gems从版本2.4到3.0之间的升级或集合,这对于Ruby开发者来说是一个重要的资源,因为版本升级通常会带来性能优化、新功能以及对旧问题的修复。...
在开发blade-translate时,开发者充分利用了Ruby的这些特性,使得翻译功能能够被轻松集成到日常的工作流中。这款工具的实现主要依赖于调用第三方翻译API,例如Google Translate或Bing Translator,将翻译服务的接口...
Ruby-Mobility是一款强大的、可拔插的Ruby翻译框架,专为解决多语言支持而设计。这个框架的主要目标是提供一种灵活、高效且易于集成的方式来处理应用中的国际化(i18n)问题。Ruby-Mobility的核心设计理念在于解耦...
内容概要:本文详细探讨了 Ruby 语言的动态特性,涵盖了多个关键方面的应用实例。包括使用 eval 系列方法(eval、class_eval、module_eval 和 instance_eval)动态执行字符串形式的代码;动态为类或者对象添加方法...
drone-ruby:Drone 0.7.0 CI映像以构建我们在Juicymo使用的Ruby 2.4.22.5.1应用程序
### Ruby on Rails 2.1新特性详尽解析 #### 概述 Ruby on Rails,一个备受推崇的Web开发框架,自2004年由David Heinemeier Hansson首次发布以来,便以其优雅的设计和“约定优于配置”的理念赢得了全球开发者的心。...
Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用...不过,使用前应确保已安装好Ruby环境,并了解基本的Ruby语法和Rails框架概念。同时,保持对框架更新的关注,及时升级以确保应用的安全性和稳定性。
在ruby 2.4+上生成 ruby代码覆盖率结果的格式化JSON报告。 最初旨在将simplecov的结果读取功能添加到CI工具中。总览您可以期望此gem生成一个coverage.json文件,该文件位于coverage文件夹中。 根据您的SimpleCoV...
Ruby 2.4系列引入了性能优化、新的语法糖以及对弃用特性的一些处理。 安装Ruby 2.4.3的步骤通常包括以下几步: 1. **解压文件**:首先,你需要使用`tar`命令来解压下载的`.tar.gz`文件。在终端中输入: ``` tar ...
本资源“ruby-v3.1.1.zip”包含了Ruby的最新版本3.1.1,这是一个重要的里程碑,因为它引入了新特性、性能优化以及对旧版本的改进。 在Ruby 3.1.1中,开发者可以期待以下关键特性: 1. **块参数解构**:Ruby 3.1...
内容概要:本文全面介绍了Ruby编程语言的基础知识和高级特性,从安装Ruby到基本语法规则,再到类与对象的概念。同时深入讲解了模块与混入、块与Proc、异常处理、元编程等高级特性,并通过创建命令行工具和Web应用的...
【Ruby on Rails 2.0的新特性介绍】 Ruby on Rails 2.0 是这个流行的Web开发框架的一个重大更新,发布于2007年底。Rails以其快速的版本迭代和创新的功能而闻名,从1.0到2.0的升级也不例外。这次更新带来了许多新...
下面我们将深入探讨Ruby的语法和语言特性,包括基础语法、编程模型、流程控制、鸭子类型、函数、数组以及散列表。 1. 基础语法 Ruby的交互式环境允许开发者直接运行代码,如`puts 'hello, world'`会输出字符串并...
《Ruby经典教程:从新手到专家》是一本深入浅出介绍Ruby编程语言的权威指南,由Peter Cooper编写,why the lucky stiff作序推荐,专为Ruby爱好者和希望掌握Ruby编程技术的学习者设计。本书全面覆盖了Ruby编程的基础...
Ruby Ruby Ruby Ruby Ruby Ruby
6. **元编程**:Ruby的动态特性允许你在运行时修改代码,这是其独特魅力之一。元编程让你能够编写更加灵活和强大的代码。 7. **标准库与Gem**:Ruby拥有丰富的标准库,同时社区还提供了无数的Gem(Ruby的库或模块)...