Измерение времени отклика на HTTP-запрос с помощью Ruby
Я создаю небольшой веб-сайт для личного использования, чтобы протестировать API, который делает моя компания. Мой босс хочет веб-сайт, на котором мы можем войти на сайт, запросить форму с помощью GET или POST и количество раз отправить запрос. Он хочет, чтобы запрос регистрировался, время на запрос и среднее время для всех запросов.
Есть ли способ измерить время ответа на запрос GET или POST с помощью Ruby?
Я просмотрел библиотеку Net:: HTTP, но не увидел ничего, что вернулось время ушло.
Есть ли сайты, которые уже делают это? Им нужен графический интерфейс, чтобы не-технари могли его использовать. Если нет, я планировал иметь простую форму, которая запускает сценарий, записывает результат этого сценария в текстовый файл или электронную таблицу, а затем отправляет его пользователю.
Есть еще предложения? (Красивый интерфейс AJAX может работать хорошо, но, вероятно, потребует хранения базы данных. При 10000 запросах за запуск, это может стать здоровенным.
2 ответов:
Как упоминалось в комментариях, ruby имеет модуль benchmark
require "benchmark" time = Benchmark.measure do #requests end
Почему Net:: HTTP заботится о времени отклика? Это не входит в его обязанности.
До и после запроса используйте
Time.nowдля установки времени начала и окончания:start_time = Time.now # ...do request... elapsed_time = Time.now - start_timeЕсли вы хотите усреднить это, сложите значения
elapsed_timeвместе и разделите на количество тестов:Время измеряется вплоть до микросекунды, которая должна быть достаточно точной для ваших нужд.total_time += elapsed_time # ... do some stuff... average_time = total_time / num_of_iterationsВы сами по себе для интерфейса, поскольку это совершенно другая тема и будет представлять собой книга.
И, кстати, ты должен мне час своего заработка за то, что я выполняю часть твоей работы за тебя.
Comments