Vous recherchez le bon type de données (par exemple IndexedSeq[Double]
) à utiliser lors de la conception d'une bibliothèque de calcul numérique spécifique au domaine. Pour cette question, je limite la portée à travailler avec des tableaux 1-Dimensionnels de Double
. La bibliothèque définira un nombre de fonctions qui sont généralement appliquées pour chaque élément du tableau 1D.Meilleur type de collection Scala pour le calcul numérique vectorisé
Considérations:
- Préférez les types de données immuables, telles que
Vector
ouIndexedSeq
- Vous voulez minimiser les conversions de données
- Raisonnablement efficaces dans l'espace et le temps
- bienvenus pour d'autres personnes utilisant le bibliothèque
- API élégante et propre
Dois-je utiliser quelque chose plus haut dans la hiérarchie des collections, comme Seq
?
Ou est-il préférable de définir simplement les fonctions à un seul élément et laisser la cartographie/itérer à l'utilisateur final?
Cela semble moins efficace (puisque certains calculs peuvent être effectuées une fois par ensemble d'appels), mais en même temps une API plus souple, car il travaillerait avec tout type de collection.
Des recommandations?
Si vous avez des problèmes avec la boxe de valeurs, vous pouvez jeter un oeil à [debox] (https://github.com/non/debox) –