我们对我们的一项 api 服务进行了一些性能增强。我被要求获取一些随机数据并记录新旧版本的响应时间,以便我们可以并排查看示例。我编写了一个快速脚本来从数据库中获取随机数据,并在两个调用中使用相同的数据迭代该结果集。我在同一个循环中使用 httparty 进行了两次调用,但似乎第一次调用比它应该的要慢得多。如果我在旧电话周围切换两者,现在会更快,而且不应该。下面是我在做什么。
如果我切换旧呼叫和新呼叫,我应该会看到反映的时间,但它没有,而且新呼叫现在真的很慢。
任何人都可以对我做错了什么有所了解吗?提前谢谢。(如果我的问题不清楚,请告诉我)
class ProductCompare < Test::Unit::TestCase
def test_compare
def time_diff(start, finish)
((finish - start) * 1000.0).to_i
end
begin
api_conn = Mysql.new()
random_skus = api_conn.query("Select random data")
random_skus.each do |row|
puts row.join("\s")
products1 = "http://api-call-old/#{row.join("\s")}"
start_time1 = Time.now
response1 = HTTParty.get(products1)
end_time1 = Time.now
products1_elapsed_tm = time_diff(start_time1, end_time1)
puts "The response time for response1 is: #{products1_elapsed_tm} ms"
products2 = "http://api-call-new/#{row.join("\s")}"
start_time2 = Time.now
response2 = HTTParty.get(products2)
end_time2 = Time.now
products2_elapsed_tm = time_diff(start_time2, end_time2)
puts "The response time for response2 is: #{products2_elapsed_tm} ms"
assert_equal(response1.body, response2.body, 'The products responce did not match')
end
api_conn.close
rescue Mysql::Error => e
puts e.error
ensure
api_conn.close if api_conn
end
end
end