Wykonuję apkę rest api z urządzenia z systemem Android i byłem naprawdę zaskoczony, patrząc na różnicę prędkości w porównaniu do komputera. Poniżej znajduje się obraz z narzędzia odpoczynku na komputerze. Dlaczego czas reakcji (dla odpoczynku) jest wolniejszy w systemie Android w porównaniu do komputera?
Próbowałem kilka bibliotek, takich jak Retrofit, Volley, a także regularne zadanie Async, aby wykonać to samo reszta połączenia z urządzenia z Androidem i zauważyłem następujące czasy odpowiedzi.
(Response times with Retrofit library (Time includes converting json data to java objects)).
Test 1: 8372 Ms
Test 2: 7715 Ms
Test 3: 7686 Ms
Test 4: 10128 Ms
Test 5: 7876 Ms
(Response times with Volley. No conversion to Java Objects from Json Data)
Test 1: 6721 MS
Test 2: 6610 MS
Test 3: 6287 MS
Test 4: 6118 MS
Test 5: 6118 MS
Wziąłem System.currentTimeMillis()
przed nawiązaniem połączenia, a po uzyskaniu odpowiedzi i odjąć te wartości, aby uzyskać nad czasem reakcji w programie Android.
Byłoby bardzo pomocne, gdyby ktoś mógł mi pokazać, jak skrócić czas reakcji w systemie Android.
FYI: Korzystam z sieci Wi-Fi i korzystam z tej samej sieci zarówno na moim komputerze, jak i urządzeniu z systemem Android.
Oto kod Modernizacja systemem Android
RestAdapter adapter = new RestAdapter.Builder()
.setEndpoint(ENDPOINT)
.build();
WeatherApi weatherApi = adapter.create(WeatherApi.class);
startTime = System.currentTimeMillis();
weatherApi.getWeather(location.getLatitude(),location.getLongitude(),new Callback<WeatherInfo>() {
@Override
public void success(WeatherInfo arg0, Response arg1) {
endTime = System.currentTimeMillis();
Log.d("TAG",endTime-startTime + ":Millisecs");
setWeatherInfo(arg0);
if(weatherDialog != null && weatherDialog.isShowing())
weatherDialog.dismiss();
}
Czy jesteś pewien, że nie mierzysz czasu po przetworzeniu wyniku połączenia, zamiast czasu, aby uzyskać odpowiedź z serwera?Może warto byłoby opublikować swój kod, aby pokazać, gdzie robisz timingy? –
@EdGeorge zaktualizowano kodem – Prakash
Między początkiem i czasem zakończenia istnieje proces konwersji odpowiedzi JSON na obiekt 'WeatherInfo'. Podane czasy będą zawierać dodatkowy czas konwersji. Jak duże jest ciało, z którego wróciłeś i czy możesz opublikować klasę POO O WeatherInfo, której używasz? –