Руководство по бенчмаркингу некоторых расщеплений строк и т. Д. - PullRequest
0 голосов
/ 19 апреля 2011

Я хочу загрузить массив с 1 миллионом направляющих, затем просмотреть их и выполнить некоторые строковые операции с каждым элементом массива.

Я хочу лишь сравнить время выполнения операций над каждым элементом массива, а не время, необходимое для инициализации массива с 1 миллионом строк.

Я пытался сделать бенчмарк раньше, но я не понял вывод.

Как бы вы это сделали, у меня есть:

rows = []
(1..1000000).each do |x|
    rows[x] = // some string data
end

n = 50000
Benchmark.bm do |x|

      rows.each do |r|
          # perform string logic here
      end

end

Это даст последовательные результаты? Любое руководство / о том, что я должен знать?

1 Ответ

1 голос
/ 14 мая 2011

Да, это даст последовательные результаты.Однако вам необходимо сообщить о тесте, и (если обработка миллиона строк выполняется слишком быстро), вам потребуется использовать переменную n, чтобы выполнить итерацию несколько раз.(Начните с низкого n и увеличивайте его, если ваше время находится в десятых или сотых долях секунды).

require 'benchmark'
# Prepare your test data here
n = 1
Benchmark.bm do |x|
  x.report('technique 1') do
    n.times do
      # perform your string logic here
    end
  end
  x.report('technique 2') do
    n.times do
      # perform your alternative logic here
    end
  end
end

Убедитесь, что вы выполняете несколько сравнений в одном блоке Benchmark;не пишите одну попытку, запишите числа, а затем измените код, чтобы запустить его снова.Это не только дополнительная работа для вас, но также может привести к неправильным сравнениям, если ваша машина находится в другом состоянии (или, если, боже мой, вы запустите один тест на одной машине, а другой - на другой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...