Remove `String#casecmp` part
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 35/100
- Tipo di issue
- Documentazione
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- ruby
- Ambito
- documentation
Direzione di ricerca
Non è indicato alcun file, test o punto di ingresso. Individuate innanzitutto la sezione della documentazione relativa a String#casecmp, esaminate gli esempi Unicode e il contesto del benchmark, quindi rimuovete la parte richiesta su String#casecmp, mantenendo indicazioni corrette su String#downcase + ==.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Ruby
- Stelle
- 5.7k
- Fork
- 370
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di fastruby/fast-ruby
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 52/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 32/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
Tutte le issue di fastruby/fast-ruby
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
riscv/riscv-unified-db#2626 ·
-
Component: GLib
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
ds-drift
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
we-promise/sure#3693 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
simp/pupmod-simp-simp#395 ·