<?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[Am schnellsten Travesieren1? vector, list , etc.]]></title><description><![CDATA[<p>Habe ein Programm, welches Zeitabläufe vorrausplanen muss (Scheduler)! und das muss sehr schnell gehen! Dabei wird der Zeitplan als mhere parallele zeitlisten dargestellt, udn jede dieser List enthalt verplannte bereiche (Allokationen).</p>
<p>diese Allokationen werden als Objekt dargestele, und die Zeitlisten als Arrays diere aneinader gereihten Allokationen.</p>
<p>Der Schelduer muss mehrere tausendmale diese Listen durchlaufen und die Allokationen lesen..</p>
<p>nun meie frage, wie ereiche ich die beste Performance.. welcher container( vecot, list, einge array) Wie soll ich diese liste durchlaufen (iterator, for-schleife, etc.) ? Soll ich dies Allokationen als Objetke oder nur dieren referenzen in den array anlegen?</p>
<p>Will die größtmögliche performane in sachen Travesieren? Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185112/am-schnellsten-travesieren1-vector-list-etc</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 01:45:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185112.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Jun 2007 03:18:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 03:18:57 GMT]]></title><description><![CDATA[<p>Habe ein Programm, welches Zeitabläufe vorrausplanen muss (Scheduler)! und das muss sehr schnell gehen! Dabei wird der Zeitplan als mhere parallele zeitlisten dargestellt, udn jede dieser List enthalt verplannte bereiche (Allokationen).</p>
<p>diese Allokationen werden als Objekt dargestele, und die Zeitlisten als Arrays diere aneinader gereihten Allokationen.</p>
<p>Der Schelduer muss mehrere tausendmale diese Listen durchlaufen und die Allokationen lesen..</p>
<p>nun meie frage, wie ereiche ich die beste Performance.. welcher container( vecot, list, einge array) Wie soll ich diese liste durchlaufen (iterator, for-schleife, etc.) ? Soll ich dies Allokationen als Objetke oder nur dieren referenzen in den array anlegen?</p>
<p>Will die größtmögliche performane in sachen Travesieren? Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311113</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 22 Jun 2007 03:18:57 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 05:25:45 GMT]]></title><description><![CDATA[<p>testen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> am schnellsten sollte nen array aufm stack sein (int array[50]), gleich danach nen array aufm heap (int *array = new int[50]). von den stl containern dürfte sich fürs vollständige traversieren ne list am besten eignen. aber wie gesagt, testen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311127</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Fri, 22 Jun 2007 05:25:45 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 05:28:36 GMT]]></title><description><![CDATA[<p>ok gut, aber was unterscheiden eigentlich ne list vom vector? haben doch beide die gleiceh funktion oder net?</p>
<p>Noch was: Ist es egal wie groß die Objekte sind welceh travesiert werden?</p>
<p>sgen wir mal ein Objetk bestehst nur aus einem integert, oder ein Objetk bestehst aus mehren anderen Objekten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311129</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 22 Jun 2007 05:28:36 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 05:35:48 GMT]]></title><description><![CDATA[<p>die objektgröße spielt nur dann eine rolle, wenn sie kopiert werden müssen. rein lesender zugriff interessiert sich nicht für die objektgröße.</p>
<p>wie die stl container intern arbeiten kommt auf die implementierung an. und die ergibt sich aus der spezifikation. vector soll schnellen random access garantieren, d.h. möglichst konstanter zugriff auf beliebige elemente. daher wird vector intern wahrscheinlich als array realisiert sein. list soll schnellen sequentiellen zugriff erlauben, d.h. über alle elemente traversieren. das wird intern wahrscheinlich als verkettete liste realisiert sein. muss aber nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> die stl container sollen für ihre hauptaufgabe die schnellstmögliche realisierung wählen. und da list genau für die von dir gewünschte aufgabe spezifiziert ist, wäre es meine erste wahl.</p>
<p>aber erst testen wird zutage fördern, obs auch wirklich die beste ist.</p>
<p>und wichtig: verwende bei stl containern die iteratoren fürs traversieren. denn die sorgen für den schnellen zugriff. wenn du was eigenes strickst, unterwanderst du die ganzen tollen optimierungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311131</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Fri, 22 Jun 2007 05:35:48 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 06:17:51 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>von den stl containern dürfte sich fürs vollständige traversieren ne list am besten eignen.</p>
</blockquote>
<p>Hm, weil das weiterlaufen nen Speicherzugriff macht statt +1 zu rechnen? Oder weil erwartet bei jedem Zugriff ein Cache-Miss passiert, weil die Nodes wild im Speicher liegen?</p>
<p>Nur zum Traversieren ist ein array bzw. vector immer noch das beste. Die Liste bringt Overhead mit. Den bezahlt man nur, wenn man die anderen Features der Liste braucht: splice und insert/delete an beliebiger Stelle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311146</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Fri, 22 Jun 2007 06:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 06:30:00 GMT]]></title><description><![CDATA[<p>wenn list eine verkettete datenstruktur ist, und vector ein array, dann dürfte insert bei list wesentlich effektiver sein..</p>
<p>Zudem hab ich mal getestet, was schneller ist , ob ich objekte driekt in liste ablege und travestiere, oder nur die referenzen... im letzteren ist das travestieren ca. 12% langsamer.. gemessen bei 500000 objekten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311153</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 22 Jun 2007 06:30:00 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 06:39:04 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>wenn list eine verkettete datenstruktur ist, und vector ein array, dann dürfte insert bei list wesentlich effektiver sein..</p>
</blockquote>
<p>Gut erkannt - jede Containerklasse hat ihre eigenen Vor- und Nachteile, darum hast du ja auch die Wahl, welche du nehmen kannst. list&lt;&gt; (idR als verkettete Liste realisiert) ermöglicht es dir, recht schnell irgendwo Elemente dazwischenzuschieben, dafür gibt es keinen Direktzugriff per Index (um das n-te Element zu finden, mußt du von l.begin() aus n Schritte vorwärts gehen), vector&lt;&gt; (idR dynamisch wachsendes Array) bietet dir die Möglichkeit, jedes Element direkt anzusprechen, aber dafür können sich Einfügevorgänge in die Länge ziehen (wenn du einen Wert irgendwo einfügen willst, mußt du erst Platz schaffen, indem alle Nachfolger umkopiert werden).</p>
<p>=&gt; jetzt kommt es auf die Anforderungen deiner Anwendung an, was du verwenden willst.</p>
<p>PS: Es gibt übrigens noch einen dritten Kandidaten namens deque&lt;&gt;, den du auch in den Vergleich einbeziehen solltest <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>PPS: Der Unterschied zwischen Wert-Container und Zeiger-Container dürfte hauptsächlich a der zusätzlich benötigten Dereferenzierung liegen - und wenn keine ernsthaften Gründe dagegensprechen, solltest du Wert-Container verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311158</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 22 Jun 2007 06:39:04 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 06:46:43 GMT]]></title><description><![CDATA[<p>hmm ok danke..</p>
<p>Aber mal abgesehen von der Performanceunterscheid zwischen Werte und Zeiger list was sind noch die nachteile?</p>
<p>und zu deque&lt;&gt;, wie das aufgebaut? wie ein array oder verkette datenstruktur?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311161</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 22 Jun 2007 06:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 07:03:07 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Aber mal abgesehen von der Performanceunterscheid zwischen Werte und Zeiger list was sind noch die nachteile?</p>
</blockquote>
<p>Der Haupt-Nachteil (oder Vorteil, je nachdem wie du es siehst) ist wohl, daß du als Anwender die Verantwortung für die Container-Elemente übernehmen mußt (insbesondere Speicherverwaltung und Gültigkeit der Objekte).</p>
<blockquote>
<p>und zu deque&lt;&gt;, wie das aufgebaut? wie ein array oder verkette datenstruktur?</p>
</blockquote>
<p>Der Aufbau ist recht komplex, um schnelles Einfügen/Löschen am Sequenzanfang zu ermöglichen - eine häufig benutzte Variante dürfte ein zweischichtiges Array sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311172</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 22 Jun 2007 07:03:07 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 07:52:44 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<blockquote>
<p>und zu deque&lt;&gt;, wie das aufgebaut? wie ein array oder verkette datenstruktur?</p>
</blockquote>
<p>Der Aufbau ist recht komplex, um schnelles Einfügen/Löschen am Sequenzanfang zu ermöglichen - eine häufig benutzte Variante dürfte ein zweischichtiges Array sein.</p>
</blockquote>
<p>Mir ist leider immernoch nicht klar, welchen Vorteil diese Implementierung vor der als Ringpuffer hat, denn einen Ringpuffer zu implementieren ist sehr einfach (und recht effizient).</p>
<p>thordk schrieb:</p>
<blockquote>
<p>gleich danach nen array aufm heap (int *array = new int[50]). von den stl containern dürfte sich fürs vollständige traversieren ne list am besten eignen. aber wie gesagt, testen.</p>
</blockquote>
<p>Hm. Wie kommst Du darauf, dass ein Heap-Array schneller traversiert werden sollte als ein STL-Vektor? Ein guter Compiler sollte da so ziemlich dasselbe draus machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311200</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Fri, 22 Jun 2007 07:52:44 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 07:57:04 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Wie kommst Du darauf, dass ein Heap-Array schneller traversiert werden sollte als ein STL-Vektor? Ein guter Compiler sollte da so ziemlich dasselbe draus machen.</p>
</blockquote>
<p>weil der overhead so ziemlich gen null tendiert. wahrscheinlich wird der unterschied zum stl vector nicht groß oder sogar gar nicht vorhanden sein, aber es könnte. wenn man das wort &quot;sollte&quot; verwenden muss, kann man sich nicht sicher sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311203</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Fri, 22 Jun 2007 07:57:04 GMT</pubDate></item><item><title><![CDATA[Reply to Am schnellsten Travesieren1? vector, list , etc. on Fri, 22 Jun 2007 09:54:32 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Mir ist leider immernoch nicht klar, welchen Vorteil diese Implementierung vor der als Ringpuffer hat, denn einen Ringpuffer zu implementieren ist sehr einfach (und recht effizient).</p>
</blockquote>
<p>Der geringere Aufwand beim wachsen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311304</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Fri, 22 Jun 2007 09:54:32 GMT</pubDate></item></channel></rss>