Size: a a a

2021 October 26

V

Valery in RubyRush.ru
Спасибо. Написал чтобы совсем не отупеть от SQL.
Немножко подправил режексп
a, b = '(-8..-5)'.scan(/-?\d+/).map(&:to_i)

Эдем, было бы интересно узнать ваше решение.
источник

Э

Эдем in RubyRush.ru
Я б вот так дословно бы сделал
источник

Ф

Фулсирамович.... in RubyRush.ru
т.е. регулярка быстрее сплита?)
источник

Э

Эдем in RubyRush.ru
Какого именно? Можно затестить для интереса
источник

Ф

Фулсирамович.... in RubyRush.ru
сейчас бенчмаркну
источник

Ф

Фулсирамович.... in RubyRush.ru
источник

Э

Эдем in RubyRush.ru
Более точно будет сделать измерения тех методов, которые реально будут использоваться
Ну и в любом случае это будет заметно, если количество операций будет измеряться миллионами
источник

Ф

Фулсирамович.... in RubyRush.ru
каких? Приведение в рендж, а потом в массив? Так там логика одинаковая
источник

Э

Эдем in RubyRush.ru
Вот так точнее будет

require 'benchmark'

input = '(-12, +15)'
iterations_count = 5_000_000

def split(input)
 input.delete('(,)').split.map(&:to_i)
end

def scan(input)
 input.scan(/-?\d+/).map(&:to_i)
end

Benchmark.bm do |x|
 x.report { iterations_count.times { split(input) } }
 x.report { iterations_count.times { scan(input) } }
end

      user     system      total        real
  3.588879   0.000000   3.588879 (  3.601012)
  7.798909   0.000000   7.798909 (  7.809389)
источник

Э

Эдем in RubyRush.ru
Ещё важно, чтоб результат правильный был :)
источник

Э

Эдем in RubyRush.ru
Ээ, в смысле?
источник

Э

Эдем in RubyRush.ru
Первый метод неправильные числа возвращает
источник

Ф

Фулсирамович.... in RubyRush.ru
а, лол
источник

Ф

Фулсирамович.... in RubyRush.ru
ладно, я думал to_i умнее в руби
источник

Ф

Фулсирамович.... in RubyRush.ru
окей, это верный
всё равно, split быстрее
источник

Э

Эдем in RubyRush.ru
Ага
источник

E

Evgeniy in RubyRush.ru
А как гуру руби относятся к переиспользованию параметров метода в самом методе?
источник

Ф

Фулсирамович.... in RubyRush.ru
но и если там строгий вид (n, n), тогда можно
"(-1, 5)"[1..-2].split(',').map(&:to_i)
=> [-1, 5]
источник

Ф

Фулсирамович.... in RubyRush.ru
должно быть быстрее delete
источник

Э

Эдем in RubyRush.ru
Да, должно быть быстрее
источник