Remove `String#casecmp` part
まだ誰も着手していません。
評価
- 難易度
- 1/5
- 見積もり時間
- 1時間未満
- 初心者へのやさしさ
- 35/100
- issue の種類
- ドキュメント
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- ruby
調査の方向性
ファイル、テスト、エントリポイントのいずれも指定されていません。まず String#casecmp のドキュメントセクションを特定し、Unicode の例とベンチマークのコンテキストを確認してから、String#casecmp に関する要求された部分を削除し、String#downcase + == についての正確なガイダンスを維持してください。
索引モデルが issue の本文から書いたものです。
説明
The String#casecmp method does not work with Unicode (even in Ruby 2.4.1), this is written in the documentation.
Example:
'Привет'.casecmp('привет') # => -1
There is a method String#casecmp?, which works with Unicode.
Example:
'Привет'.casecmp?('привет') # => true
But String.casecmp? is slower:
Warming up --------------------------------------
String#downcase + == 233.440k i/100ms
String#casecmp 274.247k i/100ms
String#casecmp? 219.906k i/100ms
Calculating -------------------------------------
String#downcase + == 5.746M (± 1.7%) i/s - 28.947M in 5.039252s
String#casecmp 6.942M (± 1.8%) i/s - 34.829M in 5.019073s
String#casecmp? 4.517M (± 2.6%) i/s - 22.650M in 5.017864s
Comparison:
String#casecmp: 6941676.9 i/s
String#downcase + ==: 5745893.8 i/s - 1.21x slower
String#casecmp?: 4517314.3 i/s - 1.54x slower
Code
require 'benchmark/ips'
SLUG = 'ABCD'
def slow
SLUG.downcase == 'abcd'
end
def fast
SLUG.casecmp('abcd') == 0
end
def another
SLUG.casecmp?('abcd')
end
Benchmark.ips do |x|
x.report('String#downcase + ==') { slow }
x.report('String#casecmp') { fast }
x.report('String#casecmp?') { another }
x.compare!
end
So, String#downcase + == is good compromise.
- 主要言語
- Ruby
- スター
- 5.7k
- フォーク
- 370
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
fastruby/fast-ruby のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 52/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 32/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
fastruby/fast-ruby の issue をすべて見る
似ている issue
-
user-reported
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
Kong/developer.konghq.com#7316 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
TheOdinProject/curriculum#31408 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
bensheldon/good_job#1816 · コメント 5 件 ·