API サービスの 1 つにいくつかのパフォーマンス強化が予定されています。いくつかのランダム データを取得し、新しいものと古いものの応答時間を記録して、例を並べて表示するように依頼されました。データベースからランダムなデータを取得し、両方の呼び出しで同じデータを使用してその結果セットを反復処理する簡単なスクリプトを作成しました。同じループで httparty を使用して両方の呼び出しを行っていますが、最初の呼び出しが本来よりもずっと遅いようです。2 つを切り替えると、古い呼び出しの方が速くなり、そうあるべきではありません。以下は私がしていることです。
古いコールと新しいコールを切り替えると、時間が反映されるはずですが、そうではなく、新しいコールが非常に遅くなります。
誰かが私が間違っていることに光を当てることができますか? 事前に感謝します。(私の問題が不明な場合はお知らせください)
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