Возможно, выполнение Ruby выполняется медленнее, чем сценарий оболочки, поэтому расширение последовательности на три команды внутри оболочки происходит быстрее, чем в Ruby.
Но разница в скорости, вероятно, мала. И самое главное, имеет ли каждая из трех команд логическое значение в коде Ruby. Если их считать одним куском, который никогда не отделен в пределах уровня логики в коде Ruby, тогда имеет смысл связывать их в оболочке. Если каждая команда соответствует некоторой логической концепции в коде Ruby, то имеет смысл разделить их.
Benchmark
t = Time.now
100.times do
system("echo foo; ls; echo bar ")
end
t1 = Time.now - t
t = Time.now
100.times do
system("echo foo ")
system("ls ")
system("echo bar ")
end
t2 = Time.now - t
puts "Together: #{t1}", "Separate: #{t2}"
Результат
Together: 0.673181442
Separate: 1.177105366
Почему вы не бенчмарк это и выяснить? –
Вы уверены, что этим командам оболочки нужен «системный» вызов? Необычно найти что-то, чего не может сделать собственный Ruby - особенно три вещи одновременно - и это, безусловно, то, что вы должны учитывать, если скорость важна для вас. Не могли бы вы поделиться с нами, что это за команды? – Borodin
Я создаю резервную копию mysql, используя 'mysqldump'. Мне нужно сбросить несколько таблиц, используя опцию 'where'. – akonsu