使用Ruby测量HTTP请求的响应时间

Squ*_*ons 10 ruby net-http

我正在建立一个供个人使用的小型网站来测试我公司制作的API.我的老板想要一个我们可以进入网站的网站,使用GET或POST请求表格,以及发送请求的次数.他希望记录请求,每个请求的时间以及所有请求的平均时间.

有没有办法测量使用Ruby的GET或POST请求的响应时间?

我查看了Net :: HTTP库,但没有看到任何返回时间的内容.

有网站已经这样做了吗?他们需要有一个GUI,所以非技术人员可以使用它.如果没有,我计划使用一个运行脚本的简单表单,将该脚本的输出写入文本文件或电子表格,然后将其发送给用户.

还有其他建议吗?(一个漂亮的AJAX外观可能很好用,但可能需要数据库存储.每次运行10000个请求,这可能会很大.

ire*_*ick 23

正如评论中所提到的,ruby有一个基准模块

require "benchmark"

time = Benchmark.measure do
  #requests
end
Run Code Online (Sandbox Code Playgroud)


the*_*Man 5

为什么Net :: HTTP会关心响应时间?那不是它的工作.

在您的请求用于Time.now设置开始和结束时间之前和之后:

start_time = Time.now
# ...do request...
elapsed_time = Time.now - start_time
Run Code Online (Sandbox Code Playgroud)

如果要平均,请将elapsed_time值相加并除以测试次数:

total_time += elapsed_time
# ... do some stuff...
average_time = total_time / num_of_iterations
Run Code Online (Sandbox Code Playgroud)

时间测量到微秒,这应该足以满足您的需求.

你是自己的界面,因为这是一个完全不同的主题,并将构成一本书.

而且,顺便说一下,你欠我一小时的工资,为你做一部分工作.

  • 虽然我在很多方面使用了基准测试 - 你会在我的许多答案中找到它,而且我可能比使用Ruby答案的任何人都更多地使用它 - 这对于这个任务来说太过分了.当我想测试多种算法并且需要用户与系统任务的格式化时间细节时,Benchmark非常棒.在这种情况下,他们只需要知道进行一次调用所需的时间,然后对结果进行平均.Benchmark的格式化结果将需要重新分析和分割才能到达简单平均值所需的位置. (2认同)