Besser Programmieren? In Arrays suchen und Arrays vergleichen
-
@wob
Und?
-
@DocShoe sagte in Besser Programmieren? In Arrays suchen und Arrays vergleichen:
@wob
Und?Naja, ist halt nicht so toll, wenns auch in geht. Ich würde daher von verschachtelten Schleifen abraten. (aus Prinzip; bei diesem speziellen Problem mit 6 aus 49 ist es wahrlich egal)
-
@wob sagte in Besser Programmieren? In Arrays suchen und Arrays vergleichen:
@DocShoe sagte in Besser Programmieren? In Arrays suchen und Arrays vergleichen:
@wob
Und?Naja, ist halt nicht so toll, wenns auch in geht. Ich würde daher von verschachtelten Schleifen abraten. (aus Prinzip; bei diesem speziellen Problem mit 6 aus 49 ist es wahrlich egal)
Wenn einem Performance wirklich wichtig ist, dann kommt man um Performance-Messungen nicht drum herum. Die O-Notation greift unter Umständen erst bei (sehr) großen N. Bei kleinen bis mittelgroßen N, kann sie sogar in die Irre führen.
Eine lineare Suche mit einem std::vector kann bspw. bei mittelgroßen N deutlich performanter sein als mit std::map oder std::unordered_map sein.
-
@Steffo sagte in Besser Programmieren? In Arrays suchen und Arrays vergleichen:
Eine lineare Suche mit einem std::vector kann bspw. bei mittelgroßen N deutlich performanter sein als mit std::map oder std::unordered_map sein.
Kann nicht nur. ist sogar so. Wo genau der BreakEven liegt kann dann jeder selber rausfinden. Wenn ich vorher weiß, dass mein vector nur so bis zehn Einträge hat, wechsel ich gar nicht erst auf eine Map, auch wenn die natürlich recht elegant ist.
-
@It0101 sagte in Besser Programmieren? In Arrays suchen und Arrays vergleichen:
Kann nicht nur. ist sogar so. Wo genau der BreakEven liegt kann dann jeder selber rausfinden. Wenn ich vorher weiß, dass mein vector nur so bis zehn Einträge hat, wechsel ich gar nicht erst auf eine Map, auch wenn die natürlich recht elegant ist.
Ich habe mal einen Vortrag gesehen. Lass mich nicht lügen, aber ich meine, dass selbst bei einer Millionen Elemente ein std::vector schneller ist als std::map.
Man muss das wie gesagt messen.
-
Ja, da hatten wir neulich einen langen Thread zu, den ich gerade nicht mehr finden kann. Die map, und besonders die unordered_map, haben beide total versagt.
-
Neulich ist gut
https://www.c-plusplus.net/forum/topic/289230/performance-map-vs-set-vs-unordered_mapEdit:
Obwohl... war der das tatsächlich?
-
@DocShoe sagte in Besser Programmieren? In Arrays suchen und Arrays vergleichen:
Neulich ist gut
https://www.c-plusplus.net/forum/topic/289230/performance-map-vs-set-vs-unordered_mapEdit:
Obwohl... war der das tatsächlich?Nee, das war in den letzten 6 Monaten. Mit mehr Muße finde ich den auch sicher noch, aber die fehlt mir in dieser Sekunde, außer es besteht brennendes Interesse an den Details, über meine Zusammenfassung hinaus. Zumal ich in dem Thread auch noch falsch lag, weil ich vor der Messung mein Geld auf die map gesetzt hatte
-
Wir haben damals aber 2 -Lösungen verglichen. Nicht eine mit ! (und ja: bei wenigen Elementen kann natürlich schneller sein - weil es da auf ganz andere Dinge ankommt)
-
Gemeint ist wohl der hier:
https://www.c-plusplus.net/forum/topic/350354/felder-auf-gleichheit-überprüfen
-
@Steffo sagte in Besser Programmieren? In Arrays suchen und Arrays vergleichen:
Lass mich nicht lügen, aber ich meine, dass selbst bei einer Millionen Elemente ein std::vector schneller ist als std::map
Das wäre sicher zu viel. Ich denke beim Suchen nach einzelnen Werten wäre eine Map "ziemlich schnell" schneller als ein unsortieres Array. Ich würde spontan auf 100 Elemente oder weniger tippen, aber sowas habe ich noch nie so genau verglichen.
Ein sortiertes Array/Vector dürfte sich allerdings ganz gut schlagen. Das benutze ich oft lieber als maps oder hash maps.
-
@Mechanics sagte in Besser Programmieren? In Arrays suchen und Arrays vergleichen:
Das wäre sicher zu viel. Ich denke beim Suchen nach einzelnen Werten wäre eine Map "ziemlich schnell" schneller als ein unsortieres Array. Ich würde spontan auf 100 Elemente oder weniger tippen, aber sowas habe ich noch nie so genau verglichen.
Ein sortiertes Array/Vector dürfte sich allerdings ganz gut schlagen. Das benutze ich oft lieber als maps oder hash maps.Das kann gut sein. Ich hatte das wohl nicht mehr ganz exakt in Erinnerung. Hier wird auch berücksichtigt wie viel Zeit es braucht Elemente hinzuzufügen:
-
So ich verstehe teilweise nur Bahnhof, was Map und Co und Geschwindigkeit angeht. Ich habe mir jetzt das Buch der C++ Programmierer von Ulrich Breyman gegönnt. Neuste Ausgabe gebraucht für 15€ im Top Zustand werde mich da mal durchkämpfen und damit lernen. Als nächstes Projekt möchte ich ein Kniffelprojekt entwickeln, ohne KI und Grafik natürlich.
Gruß
Betzi
-
@betzi1985 sagte in Besser Programmieren? In Arrays suchen und Arrays vergleichen:
So ich verstehe teilweise nur Bahnhof, was Map und Co und Geschwindigkeit angeht. Ich habe mir jetzt das Buch der C++ Programmierer von Ulrich Breyman gegönnt. Neuste Ausgabe gebraucht für 15€ im Top Zustand werde mich da mal durchkämpfen und damit lernen. Als nächstes Projekt möchte ich ein Kniffelprojekt entwickeln, ohne KI und Grafik natürlich.
Gruß
Betzi
Glückwunsch, damit hast du nen guten Griff getan!