Ho una grande lista (> 500.000) di oggetti e voglio convertirla in una matrice multidimensionale. Fino ad ora lo sto facendo usando un ciclo for, ma dopo alcune misurazioni ho identificato che questo è un collo di bottiglia per il mio programma.
Sto considerando di effettuare la conversione in parallelo usando un executor del pool di thread. La logica è che se ho thread N dividerò i dati iniziali in blocchi N. Ogni thread "converte" i valori dell'oggetto e li inserisce nell'array "condiviso". Poiché conosco la posizione esatta di ciascun elemento, posso assicurarmi che 2 thread non tenteranno mai di scrivere nella stessa posizione di array.
È un buon modo per andare? Ci sono delle considerazioni?
Esistono librerie che implementano tali funzionalità? (Nota: non sto chiedendo le librerie da sé, dato che questo sarebbe argomento. Voglio solo sapere, se c'è qualcosa di simile, il che significa che sono nella buona strada)
Nota 1: so che creare thread è anche "dispendioso in termini di tempo", ma per trovare l'importo_del_data / numero_di_thread, la conversione parallela è più ottimale di quella seriale è un altro problema.