2013-03-27 13 views
7

Buduję małą witrynę do osobistego użytku, aby przetestować interfejs API, który moja firma wykonuje. Mój szef chce strony internetowej, na której możemy wejść na stronę internetową, poprosić o formularz za pomocą GET lub POST, a także liczbę razy, aby wysłać zapytanie. Żąda zalogowania żądania, czasu na żądanie i średniego czasu dla wszystkich żądań.Zmierz czas odpowiedzi dla żądania HTTP przy użyciu Ruby

Czy istnieje sposób zmierzenia czasu odpowiedzi dla żądania GET lub POST za pomocą Ruby?

Przeglądałem bibliotekę Net :: HTTP, ale nie widziałem niczego, co zwróciło czas.

Czy istnieją witryny, które już to robią? Musieliby mieć GUI, aby nieużytkownicy mogli z niego korzystać. Jeśli nie, planowałem posiadanie prostego formularza, który uruchamia skrypt, zapisuje ouput tego skryptu do pliku tekstowego lub arkusza kalkulacyjnego, a następnie wysyła go do użytkownika.

Jakieś inne sugestie? (A nice AJAX patrząc interfejs może działać dobrze, ale prawdopodobnie wymagać przechowywania bazy danych. Na 10000 żądań na metę, które mogłyby dostać mocny.

+1

Co na temat korzystania Benchmark Module Ruby? – jstim

+0

to bardzo dobre pytanie. –

+0

Wydaje się, że test porównawczy może się udać - [znalazłem ten wpis] (http://blog.segment7.net/2010/05/07/net-http-is-not-slow), w którym wygląda na to, że właśnie tego użył . Porozmawiam z szefem, może zapytam i zobaczę, czy to najlepsza metoda. – Squadrons

Odpowiedz

17

Jak wspomniano w komentarzach, Ruby ma benchmark module

require "benchmark" 

time = Benchmark.measure do 
    #requests 
end 
+0

Benchmark zrobił dobrze, dziękuję. – Squadrons

3

Dlaczego Net :: HTTP dbają o czas reakcji? To nie jest jego praca.

Przed i po korzystanie prośba Time.now ustawić czas rozpoczęcia i zakończenia:

start_time = Time.now 
# ...do request... 
elapsed_time = Time.now - start_time 

Jeśli chcesz uśrednić, że dodanie wartości elapsed_time razem i podzielić przez liczbę testów:

total_time += elapsed_time 
# ... do some stuff... 
average_time = total_time/num_of_iterations 

Czas mierzy aż do mikro-sekundy, która powinna być odpowiednia dla twoich potrzeb.

Jesteś sam dla interfejsu, ponieważ jest to zupełnie inny temat i może stanowić książkę.

I, BTW, jesteś mi winien godzinę za swoje zarobki za wykonanie części swojej pracy za ciebie.

+2

Wznowienie dla snarka! – ireddick

+0

Nie odkrywaj ponownie koła. Użyj 'benchmark'. – Reactormonk

+2

Podczas gdy używam benchmarku dla wielu rzeczy - znajdziesz to w wielu moich odpowiedziach tutaj i prawdopodobnie używam go bardziej niż ktokolwiek, kto obsługuje odpowiedzi Ruby - to przesada dla tego zadania. Benchmark jest wspaniały, gdy chcę przetestować wiele algorytmów i potrzebuję sformatowanego czasu dla zadań użytkownika i systemu. W takim przypadku wystarczy wiedzieć, ile czasu zajmuje wykonanie jednego połączenia, a następnie uzyskać średnie wyniki. Wyniki sformatowane w systemie Benchmark będą wymagały reparacji i podziału, aby uzyskać to samo miejsce, które otrzyma prosta średnia. –

Powiązane problemy