Angenommen, ich habe eine Liste mit Elementen der Größe 30k, und ich möchte eine Operation für alle möglichen Paare innerhalb einer Liste durchführen. Also ich hatte:
%Vor%Frage 1: Gibt es etwas, das ich als Alternative nutzen kann? (Wie Anwendungsfunktoren).
Ich habe auch bemerkt, dass diese flatMap-Map-Operation wesentlich langsamer ist als die imperative Loop-Version. (vielleicht aufgrund von Schließungen?)
%Vor%Frage 2: Gibt es eine Möglichkeit, die Leistung der flatMap / map-Version zu verbessern?
Wenn wir auf die Frage 2 antworten, denken wir darüber nach, flatMap
overload hinzuzufügen, was keine Closures für jedes Element in der äußeren Sammlung / Sequenz erzeugt: Ссылка
Aber wenn Sie einige Nebenwirkungen für jedes Paar ausführen möchten, anstatt die Sequenz zu transformieren, rate ich Ihnen, bei for
-loops oder inline forEach
lambdas zu bleiben, was im Grunde dasselbe ist / p>
Einige Alternativen mit Auswirkungen auf die Leistung:
flatMap
/ map
. : - ( forEach
/ forEach
: Da Sie einfach eine Operation für jedes Paar durchführen möchten, müssen Sie nicht unbedingt flatMap
oder map
verwenden, um die Liste zu transformieren, damit Sie forEach
/ verwenden können. forEach
stattdessen:
for
/ for
-Lösung. : -) Wenn Sie die Liste transformieren müssen, dann scheint Ihre flatMap
/ map
-Lösung die beste Lösung zu sein.
Tags und Links kotlin