2
respostas

Alternativas para melhorar este trecho de código

Bom dia pessoal... venho buscando alternativas para melhorar o desempenho deste codigo abaixo... a principio ele insere de 20 em 20 no banco, porém, o processo total demora aproximadamente 13 minutos... tem alguma outra maneira de melhorar ?

Callable<Optional<Insumo>> callable = () -> {
            return linkedHashInsumos.stream().filter(insumo -> codigoBase.compareTo(insumo.getBase1_cod()) == 0 && 
                    (tipo.equalsIgnoreCase("INSUMO") ? "0" : "1").equalsIgnoreCase(insumo.getInsu1_com()) && 
                    codigoIde.equalsIgnoreCase(insumo.getInsu1_ide())).findFirst();
        };

        ExecutorService service = Executors.newFixedThreadPool(4);
        Future<Optional<Insumo>> future = service.submit(callable);

        final Optional<Insumo> in = future.get();

O principal é:

linkedHashInsumos.stream().filter(insumo -> codigoBase.compareTo(insumo.getBase1_cod()) == 0 && 
                    (tipo.equalsIgnoreCase("INSUMO") ? "0" : "1").equalsIgnoreCase(insumo.getInsu1_com()) && 
                    codigoIde.equalsIgnoreCase(insumo.getInsu1_ide())).findFirst();
2 respostas

Opa!

Você já tentou aumentar o número de threads no pool? Ali parece que você limitou a utilização fixa de 4. Talvez, aumentar a quantidade possa incrementar na execução da concorrência.

obrigado pela resposta Vinicius, alternei entre as opções disponiveis ali Executors."metodos" mas não tive a resposta que precisava, porém, depois de alguns debugs vi alguns "replace" estava comprometendo o desempenho...