Tôi đang thực hiện cuộc gọi api còn lại từ thiết bị Android và thực sự ngạc nhiên khi thấy sự khác biệt về tốc độ khi so sánh với PC. Dưới đây là hình ảnh từ một công cụ còn lại trên PC. Tại sao thời gian phản hồi (cho Cuộc gọi còn lại) chậm hơn trong Android khi so sánh với PC?
Tôi đã thử một vài thư viện như Retrofit, Volley và cũng có tác vụ Async thông thường để thực hiện cuộc gọi còn lại tương tự từ thiết bị Android và nhận thấy thời gian phản hồi sau.
(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
tôi mất System.currentTimeMillis()
trước khi thực hiện cuộc gọi và sau khi nhận được sự hưởng ứng và trừ những giá trị để có được trên thời gian đáp ứng trong chương trình Android.
Sẽ rất hữu ích nếu một số người có thể chỉ cho tôi cách giảm thời gian phản hồi trong Android.
FYI: Tôi đang sử dụng Wifi và sử dụng cùng một mạng cho cả PC và thiết bị Android của mình.
Đây là mã Retrofit 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();
}
Bạn có chắc chắn rằng bạn không thực sự đo thời gian sau khi xử lý kết quả cuộc gọi thay vì thời gian nhận phản hồi từ máy chủ không?Có thể đăng mã của bạn để cho biết nơi bạn đang tạo thời gian sẽ hữu ích –
@EdGeorge được cập nhật bằng mã – Prakash
Giữa thời gian bắt đầu và kết thúc, có quá trình chuyển đổi phản hồi JSON thành đối tượng 'WeatherInfo'. Thời gian bạn đã cung cấp sẽ chứa thời gian chuyển đổi bổ sung đó. Cơ thể bạn quay lại bao nhiêu và bạn có thể đăng lớp WeatherInfo POJO mà bạn đang sử dụng không? –