¿Cómo puedo hacer peticiones simultáneas más rápido con Retrofit / OkHttp?

Necesito hacer 50 solicitudes HTTP GET tan rápido como sea posible con Retrofit en Android. Estoy utilizando Retrofit con OkHttp. Actualmente, Retrofit está haciendo un trabajo pobre frente a Java ThreadPoolExecutor y HttpUrlConnection : unos 50sec para Retrofit y 30sec para HttpUrlConnection normal para las 50 peticiones, si establezco el tamaño de pool 20 para ThreadPoolExecutor y para Retrofit / OkHttp establezco okHttpClient.dispatcher().setMaxRequests(20); .

Si miro logcat puedo ver que Retrofit está haciendo un máximo de 5 peticiones simultáneas no importa lo que establezca en setMaxRequests() mientras que con ThreadPoolExecutor hay tantas solicitudes concurrentes como hay hilos de trabajo disponibles.

¿Hay algo que pueda hacer para hacer Retrofit más rápido? No quiero cambiar a HttpUrlConnection porque Retrofit es tan elegante y fácil de usar.

Editar 1

Intenté proporcionar ThreadPoolExecutor personalizado a OkHttp pero ninguna mejora del tiempo de esto:

 OkHttpClient.Builder builder = new OkHttpClient.Builder(); ExecutorService exec = new ThreadPoolExecutor(20, 20, 1, TimeUnit.HOURS, new LinkedBlockingQueue<>()); Dispatcher d = new Dispatcher(exec); builder.dispatcher(d); OkHttpClient okHttpClient = builder.build(); okHttpClient.dispatcher().setMaxRequests(20); 

Editar 2

Hago todas las peticiones al mismo punto final, si esto importa

Ya que todos van al mismo host, ¿has probado:

 okHttpClient.dispatcher().setMaxRequestsPerHost(20); 

Dispatcher.setMaxRequestsPerHost

  • Convertidor de gson retrofit para json anidado con diferentes objetos
  • Hilo predeterminado de actualización
  • HATEOAS principal en retrofit? Enlace a los recursos?
  • La fábrica del convertidor de retroadaptación no puede acceder a GsonConverterFactory
  • Cómo Retrofit con OKHttp utilizar datos de caché cuando está fuera de línea
  • ¿Cómo determinar si se está ejecutando una solicitud determinada?
  • Retrofit: ¿Cómo enviar una solicitud POST con campos constantes?
  • Usando retrofit con persistencia de Cookie
  • ¿Cómo manejar los campos JSON opcionales en Retrofit para Android?
  • Deshabilitar la comprobación de certificados SSL en la biblioteca de actualización
  • Default Schedulers para rxjava en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.