I eine Tabelle RatingAlgorithmus zu aggregieren Punkte
- row1 = (V1, K1, 5);
- row2 = (V2, K2, 7);
- row2 = (V1, K1, 3);
ich brauche die Punkte in einer aggregate Tabelle , so dass die Tabelle enthält
- row1 = (V1, K1, 8) zu aggregieren;
- row2 = (V2, K2, 7);
I Schleife einmal durch die Rating-Tabelle und eine Karte erstellen mit [key = (Col1, Col2), value = Points] Wenn der Schlüssel vorhanden fügt ich die Punkte sonst einen neuen Map-Eintrag erstellen. Die Rating-Tabelle kann fast 100 Einträge enthalten, deshalb wollte ich mehrere Durchgänge vermeiden.
Ist dies der effizienteste Weg?
Wenn das '+' in '100 +' nicht Milliarden bedeutet, sollten Sie bei einer sauberen und effizienten Implementierung bleiben, wie Sie es vorgeschlagen haben. Die ** meisten ** effizienten Lösungen werden selten benötigt. – Howard
@Howard was für eine effizientere Lösung meinst du? Wenn die Abfrage milliardenfach durchgeführt wird, ist es möglicherweise wichtig, ihre Komplexität 100 Mal zu reduzieren. –
@Boris Genau das, was ich meinte. Es gibt einen Unterschied zwischen "am effizientesten" und "effizient in der realen Welt". Alle Arten von "schmutzigen" Dingen wie Prefetching, Größe von Cache-Zeilen ... kommen ins Spiel. Und es ist wichtig, wenn Sie Daten im Milliardenbereich haben, aber nicht für '100 +'. In dieser Region sollten Sie die Lösung einfach und verständlich halten - d. H. Effizient für den Programmierer und alle anderen, die Ihren Code lesen (natürlich ohne die Systemleistung unnötig zu beeinträchtigen). – Howard