Вздох ... контрольные показатели людей ...
require 'fruity'
NUM = '1,234,567,890'
compare do
_delete { NUM.delete(',').to_i }
_gsub { NUM.gsub(',', '').to_i }
_scan {NUM.scan(/\d+/).join.to_i }
_split { NUM.split(',').join.to_i }
end
# >> Running each test 4096 times. Test will take about 1 second.
# >> _delete is faster than _split by 2.4x ± 0.1
# >> _split is faster than _gsub by 10.000000000000009% ± 1.0%
# >> _gsub is faster than _scan by 2.2x ± 0.1
Другими словами, используйте delete(',')
удалить, ограничивающей запятые и затем преобразовать полученную строку в целое число. Не разбивайте его на массив, а затем снова присоединяйте его, не отсканируйте его в массив и не позволяйте gsub
конвертировать ','
в регулярное выражение, а затем заменить все совпадения на ''
.
'gsub!', Как и многие другие методы bang, возвращает 'nil', если никаких изменений не сделано. –
Зачем вам нужно мутировать строку перед преобразованием ее в целое? –
@CarySwoveland, потому что «1,056» .to_i не работает. – randombits