<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Performancetechnische Frage zu verschiedenen STL Containern]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hätte da mal eine Frage bezüglich der STL Performance.</p>
<p>Kennt jemand von euch Artikel über Performanceunterschiede verschiedener STL Containern eventuell auch mit einem Vergleich zum standard Array oder ähnliches?</p>
<p>Das Problem ist folgendes:<br />
ich habe vor mir eine zeitkritische Software die auf einem Cluster läuft. In dieser werden viele verschiedene Container benutzt. Jetzt will man das ganze vereinheitlichen um die Lesbarkeit und Verständlichkeit des Codes zu vergrößern, aber eben unter dem Aspekt der Performance.</p>
<p>Jetzt ist eben die Frage ob Vector, Map etc etc...</p>
<p>Leider habe ich bisher keine guten Artikel dazu gefunden. Außerdem würde mich auch eure Meinung zu dem Thema interessieren.</p>
<p>Schonmal vielen Dank im voraus!</p>
<p>- Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182396/performancetechnische-frage-zu-verschiedenen-stl-containern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 19:29:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182396.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 May 2007 15:38:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Performancetechnische Frage zu verschiedenen STL Containern on Thu, 24 May 2007 15:38:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hätte da mal eine Frage bezüglich der STL Performance.</p>
<p>Kennt jemand von euch Artikel über Performanceunterschiede verschiedener STL Containern eventuell auch mit einem Vergleich zum standard Array oder ähnliches?</p>
<p>Das Problem ist folgendes:<br />
ich habe vor mir eine zeitkritische Software die auf einem Cluster läuft. In dieser werden viele verschiedene Container benutzt. Jetzt will man das ganze vereinheitlichen um die Lesbarkeit und Verständlichkeit des Codes zu vergrößern, aber eben unter dem Aspekt der Performance.</p>
<p>Jetzt ist eben die Frage ob Vector, Map etc etc...</p>
<p>Leider habe ich bisher keine guten Artikel dazu gefunden. Außerdem würde mich auch eure Meinung zu dem Thema interessieren.</p>
<p>Schonmal vielen Dank im voraus!</p>
<p>- Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291508</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Thu, 24 May 2007 15:38:59 GMT</pubDate></item><item><title><![CDATA[Reply to Performancetechnische Frage zu verschiedenen STL Containern on Thu, 24 May 2007 16:12:45 GMT]]></title><description><![CDATA[<p>Ich kann Dir ein paar Sachen dazu sagen, aber gerade wenn es auf nem Cluster läuft und die Datenstrukturen auch parallel zugegriffen werden lohnt es sich eventuell auch auf spezialisiertere Datenstrukturen umzusteigen, wenn es um Performance geht.</p>
<p>Generell ist erstmal wichtig um welche Datenmengen es geht. Für kleine Mengen sind Arrays bzw. vector (ggf. sortiert) unschlagbar. Wird es mehr, dann kommt's drauf an, was damit gemacht wird. Regelmäßiges Suchen von Einträgen ist böse für Listen. Dafür sind die sehr gut, wenn man nur einfügen und löschen an beliebigen Positionen muß, die man aber schnell bestimmen kann. Ist die Datenstruktur eher statisch geht vielleicht ein (ggf. sortierter) vector gut. Wird viel aus der Mitte gelöscht bzw. dort eingefügt, dann ist vector sehr lahm und set/map und Konsorten sind gut. Benötigst Du die Sortierung nicht, sondern nur schnelles auffinden/einfügen/löschen von Daten, ist evtl auch Hashing eine interessante Option.</p>
<p>Zuguterletzt gibt's noch deque, das gut ist, wenn nur am Anfang/Ende eingefügt und gelöscht werden. Insbesondere hat deque ein besseres worst-case Laufzeitverhalten als ein vector. Das kann für garantierte Performance (oder in manchen Fällen auch für parallele Algorithmen) von großer Bedeutung sein.</p>
<p>Vielleicht kannst Du ein bißchen genauer beschreiben, welche Anforderungen die gesuchte Datenstruktur hat, dann kann ich Dir vielleicht auch ein bißchen was konkreteres sagen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291533</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Thu, 24 May 2007 16:12:45 GMT</pubDate></item><item><title><![CDATA[Reply to Performancetechnische Frage zu verschiedenen STL Containern on Thu, 24 May 2007 16:35:53 GMT]]></title><description><![CDATA[<p>Du hast recht, mit meiner Beschreibung des Problems lässt sich nicht viel anfangen.</p>
<p>Es werden z.Z. vor allem Maps und Vektoren verwendet. Die Datenmenge die darin abgelegt wird ist eigentlich sehr gering (was folgendes heißen soll: maximal ~20 Elemente; Elemente sind entweder Zeiger, oder standard Datentypen wie int, double etc...). Die Menge der abgelegten Elemente ändert sich im Prizip nie.<br />
Diese Container sind sortiert und miteinander synchronisiert (also muss mit einem einzigen Index bei zwei eventuell unterschiedlichen Containern der selbe Wert hinterlegt sein).<br />
Hier sieht man das Dilemma: durch die Nutzung verschiedener STL Containern macht man sich die Arbeit unnötig schwer.</p>
<p>Jetzt bleibt die Frage was Performancetechnisch sinnvoller ist.</p>
<p>Die Software läuft bis zu 140 mal auf dem Cluster und wird dynamisch auf den Rechnern verteilt. Parallelen Zugriff dürfte es eigentlich nicht geben.</p>
<p>Da man volllastfähig bleiben will ist man durch die immer komplexer werdende Software darauf angewiesen den Code zu optimieren. Und da die Container vereinheitlich werden sollen wäre hier die schnellste Lösung natürlich sinnvoll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291552</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Thu, 24 May 2007 16:35:53 GMT</pubDate></item><item><title><![CDATA[Reply to Performancetechnische Frage zu verschiedenen STL Containern on Thu, 24 May 2007 16:52:56 GMT]]></title><description><![CDATA[<p>Also die Leistung der einzelnen Containertypen kannst du in jedem guten C++ Buch nachlesen, in dem die Std-Lib beschrieben wird. Beispiel: der std::vector muß einfach laut Standard einen konstanten lesenden Zugriff gewährleisten. Beim Hinzufügen sieht es beim Vector schlecht aus, wenn du nicht am Ende des Vectors etwas hinzufügst. Dafür ist es aber bei einer std::list weniger ein problem. usw. usf. Es gibt genug C++-Doku (vorallem der ISO-C++-Standard selbst) in dem das drin steht. Du kannst davon ausgehen, das sich Implementierungen von Dinkumware u.a. daran halten.</p>
<p>Ansonst kann man natürlich auch auf die TR1-Container ausweichen, wenn man schon Implementierungen dafür für sein Compiler-System hat. Da sind dann unordered-maps und -sets drin. Also für eine Key-Suche natürlich sehr schnell. Müsste schneller als eine std::map sein. Aber ne std::map ist dafür sortiert, falls das wichtig ist.</p>
<p>Also, du siehst: Literatur besorgen! Z.B. <a href="http://www.springeronline.com/sgw/cda/frontpage/0,11855,1-40109-22-48185313-0,00.html" rel="nofollow">http://www.springeronline.com/sgw/cda/frontpage/0,11855,1-40109-22-48185313-0,00.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291567</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 24 May 2007 16:52:56 GMT</pubDate></item><item><title><![CDATA[Reply to Performancetechnische Frage zu verschiedenen STL Containern on Thu, 24 May 2007 17:27:28 GMT]]></title><description><![CDATA[<p>Tobias W schrieb:</p>
<blockquote>
<p>Es werden z.Z. vor allem Maps und Vektoren verwendet. Die Datenmenge die darin abgelegt wird ist eigentlich sehr gering (was folgendes heißen soll: maximal ~20 Elemente; Elemente sind entweder Zeiger, oder standard Datentypen wie int, double etc...). Die Menge der abgelegten Elemente ändert sich im Prizip nie.<br />
Diese Container sind sortiert und miteinander synchronisiert (also muss mit einem einzigen Index bei zwei eventuell unterschiedlichen Containern der selbe Wert hinterlegt sein).</p>
</blockquote>
<p>Hm, wenn die Dinger so klein sind dürfte sich der Overhead, den eine map mit sich bringt, garnicht lohnen. Ich bin nichtmal sicher, ob es sich da lohnt die Dinger zu sortieren. Eventuell ist einfaches drüberiterieren da sogar schneller (evtl mit sentinel am Ende um ein if zu sparen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291600</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Thu, 24 May 2007 17:27:28 GMT</pubDate></item><item><title><![CDATA[Reply to Performancetechnische Frage zu verschiedenen STL Containern on Thu, 24 May 2007 19:26:52 GMT]]></title><description><![CDATA[<p>Ok, schonmal danke für die Antworten. Ich werde mich jetzt mal weiter damit beschäftigen um ne Lösung zu finden.</p>
<p>Wie mans eventuell vermuten kann bin ich kein Festangestellter, sondern Werksstudent. Das ist zur Zeit meine Nebenaufgabe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291723</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Thu, 24 May 2007 19:26:52 GMT</pubDate></item><item><title><![CDATA[Reply to Performancetechnische Frage zu verschiedenen STL Containern on Fri, 25 May 2007 02:24:40 GMT]]></title><description><![CDATA[<p>Welche Firma lässt einen Werksstudenten an eine zeitkritische Software die auf einem Cluster läuft???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1291873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1291873</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 25 May 2007 02:24:40 GMT</pubDate></item></channel></rss>