Alors je viens de l'apprentissage de nouvelles Java 8, spécialement lambdas et la date et l'heure de l'api. J'ai été comparant avec scala. Mon idée de base était de trouver le temps d'exécution de la différence entre impératif, Flux et courant parallèle. J'ai donc décidé de créer une application de Bibliothèque et de faire certaines opérations comme la recherche, le filtrage, le tri, etc. J'ai créé une Bibliothèque de classe avec un champ de la liste des appelés livres et peuplée avec plus de 1000 livres. Alors créé une interface fonctionnelle pour la recherche et fait de l'opération dans les trois styles. Tout a bien fonctionné. Mon code est:
// Functional Interface
interface Search<T> {
public void search(T t);
}
// Library class
final Library library = new Library();
// This just creates some random book objects.
final List<Book> books = collectBooks();
final Search<List<Book>> parallelSearch = (bks) -> library.findAndPrintBooksParallel(bks);
// Parallel Operations
private void findAndPrintBooksParallel(List<Book> books) {
books.parallelStream()
.filter(b -> b.getAuthor().equals("J.K. Rowling"))
.sorted((x,y) -> x.getAuthor().compareTo(y.getAuthor()))
.map(Book::getIsbn)
.forEach(Library::waitAndPrintRecord);
}
Maintenant, j'ai essayé de re-créer le même programme de scala et de voir si l'exécution est plus rapide ou pas? Étonnamment scala ne me permet pas de le faire en parallèle de tri (Ou peut-être que je suis ignorant ici). Mon scala bibliothèque
// Again some random book objects as a list
val books = collectBooks
// Parallel operation
books.par filter(_.author == "J.K. Rowling") map (_.isdn) foreach waitAndPrint
Ici l' books.par
donne un ParSeq. Ce n'est pas une méthode de tri. Est-il une manière que je pourrais créer un tri parallèle avec ma liste de livres à scala. Donc je pourrais écrire quelque chose comme:
books.par filter(_.author == "J.K. Rowling") sortWith (_.author < _.author) map (_.isdn) foreach waitAndPrint
Votre aide est très appréciée. Merci.