Как выбрать оптимальное максимальное одновременное значение для flatMap

Приложение должно загрузить много изображений из сети. Я хотел бы загрузить эти изображения в parallel как можно эффективнее. Для достижения параллельной загрузки используется flatMap с предоставлением значения maxConcurent.

    Disposable ds =
    dataManager.getAllImages()
        .flatMap(image -> Observable.zip(
        dataManager.processImageCaching(image.getFullSizeImage()),
            dataManager.processImageCaching(image.getThumbImage()),
            (Optional<CachedImage> fullSizeImage, Optional<CachedImage> thumbImage) -> {
                image.setFullSizeImageLocalPath(fullSizeImage.map(CachedImage::getFilePathInternal).orElse(null));
                image.setThumbImageLocalPath(thumbImage.map(CachedImage::getFilePathInternal).orElse(null));
                return image;
            })
            .subscribeOn(Schedulers.io()), MAX_CONCURRENT_THREADS)
        .doOnNext(dataManager::saveCachedImageToDb)
        .subscribeOn(Schedulers.io())

Приложение работает и загружается параллельно, но используемое значение для max concurrent, вероятно, не является оптимальным и не может быть универсальным. Я предполагаю, что это значение может быть разным для разных устройств. Может ли кто-нибудь дать мне представление о том, как выбрать наилучшее максимальное одновременное значение в зависимости от возможностей устройства? Спасибо. Примечание. Текущее максимальное одновременное значение равно 3.


person Дмитро Яковлєв    schedule 29.10.2018    source источник


Ответы (1)


/**
 * @param subscribeOn if not set, then creates new Thread (if there is room for new Thread)
 * @param observeOn if not set, then uses MainThread
 */
data class SchedulerProvider(val subscribeOn: Scheduler
                             = Schedulers.from(Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()))
                             , val observeOn: Scheduler = AndroidSchedulers.mainThread())

Я использую что-то вроде этого, очевидно, это основано на доступных процессорах. Я не уверен, есть ли лучший способ

person Janusz Hain    schedule 29.10.2018