<?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[riesiger bitvector und Adressierung der bits]]></title><description><![CDATA[<p>Hi, ich habe ein Implementierungsproblem, über welches ich mir schon geraume Zeit den Kopf zerbreche ...</p>
<p>- ich benötige einen (spärlich besetzten) bitvector<br />
- allerdings beträgt die Länge ca 90^256</p>
<p>den bitvector zu implementieren ist garnicht das problem<br />
(einfach häppchenweise im Speicher ablegen)</p>
<p>ich sehe das Problem eher darin, das ich ja ca 1700 bits nur für die Adresse einens bits im vector brauche, und wie ich die Adresse darstellen soll,<br />
bzw. wie ich die Adressierung allgemein umsetzen soll, ist mir schleierhaft.</p>
<p>Auf einem 64bit System sind das ja immernoch 25 ints,<br />
und dann 25 mal indirekt zu addressieren frisst imho viel zu viel Performance</p>
<p>jemand eine bessere Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/334534/riesiger-bitvector-und-adressierung-der-bits</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 12:11:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/334534.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Sep 2015 09:48:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to riesiger bitvector und Adressierung der bits on Mon, 21 Sep 2015 09:48:13 GMT]]></title><description><![CDATA[<p>Hi, ich habe ein Implementierungsproblem, über welches ich mir schon geraume Zeit den Kopf zerbreche ...</p>
<p>- ich benötige einen (spärlich besetzten) bitvector<br />
- allerdings beträgt die Länge ca 90^256</p>
<p>den bitvector zu implementieren ist garnicht das problem<br />
(einfach häppchenweise im Speicher ablegen)</p>
<p>ich sehe das Problem eher darin, das ich ja ca 1700 bits nur für die Adresse einens bits im vector brauche, und wie ich die Adresse darstellen soll,<br />
bzw. wie ich die Adressierung allgemein umsetzen soll, ist mir schleierhaft.</p>
<p>Auf einem 64bit System sind das ja immernoch 25 ints,<br />
und dann 25 mal indirekt zu addressieren frisst imho viel zu viel Performance</p>
<p>jemand eine bessere Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468601</guid><dc:creator><![CDATA[GentleGiant]]></dc:creator><pubDate>Mon, 21 Sep 2015 09:48:13 GMT</pubDate></item><item><title><![CDATA[Reply to riesiger bitvector und Adressierung der bits on Mon, 21 Sep 2015 10:00:49 GMT]]></title><description><![CDATA[<p>Als Adresse kannst du ein <code>std::array&lt;std::size_t, N&gt;</code> mit passendem N nehmen. Spärlich besetzt hört sich nach Hashset an. Zusammen macht das also <code>std::unordered_set&lt;std::array&lt;std::size_t, N&gt;&gt;</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468602</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Mon, 21 Sep 2015 10:00:49 GMT</pubDate></item><item><title><![CDATA[Reply to riesiger bitvector und Adressierung der bits on Mon, 21 Sep 2015 10:10:52 GMT]]></title><description><![CDATA[<p>Die Frage ist eher ob es vielleicht andere Möglichkeiten zur Lösung deinen Problems gibt.<br />
Was hast du denn genau vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468603</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Mon, 21 Sep 2015 10:10:52 GMT</pubDate></item><item><title><![CDATA[Reply to riesiger bitvector und Adressierung der bits on Mon, 21 Sep 2015 10:46:12 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Als Adresse kannst du ein <code>std::array&lt;std::size_t, N&gt;</code> mit passendem N nehmen. Spärlich besetzt hört sich nach Hashset an. Zusammen macht das also <code>std::unordered_set&lt;std::array&lt;std::size_t, N&gt;&gt;</code> .</p>
</blockquote>
<p>das hört sich gut an, peinlich das ich darauf nicht gekommen bin</p>
<p>Um die Frage nach dem Warum zu beantworten :</p>
<p>ich benötige eine sehr speichersparende Möglichkeit um viele Strings im Speicher zu halten.</p>
<p>- die Struktur muss dabei eigentlich nur <strong>insert</strong> und <strong>contains</strong> unterstützen.<br />
- angefangen habe ich mit einem prefix baum, allerdings benötigen dort schon die Zeiger auf die Kinder viel Speicher<br />
- ich möchte nun versuchen den Baum in ein Array einzubetten, dann benötige ich für jede Vater-Kind-Relation nur noch ein bit ...</p>
<p>daraus ergibt sich auch die Länge die Bitvectors ( ich hoffe ich habe richtig gerechnet )<br />
Die Strings werden über einem Alphabet der Grösse 90 gebildet, max length ist 255, ergibt dann maximale Tiefe im Baum von 256, und der grösste Index in der Einbettung müsste dann 90^256 sein .. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> ( alle Angaben gerundet )</p>
<p>Da die String meist gleich anfangen, und sich auch sonst eher am Ende unterscheiden, sollte imho so ein Baum die speicher-sparenste Möglichkeit sein<br />
( im Speicher komprimieren möchte ich irgendwie nicht, weil dann das <strong>contains</strong> meiner Meinung nach total lahm wird, weil ich ja entpacken und suchen muss )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468604</guid><dc:creator><![CDATA[GentleGiant]]></dc:creator><pubDate>Mon, 21 Sep 2015 10:46:12 GMT</pubDate></item><item><title><![CDATA[Reply to riesiger bitvector und Adressierung der bits on Mon, 21 Sep 2015 18:09:14 GMT]]></title><description><![CDATA[<p>GentleGiant schrieb:</p>
<blockquote>
<p>ich benötige eine sehr speichersparende Möglichkeit um viele Strings im Speicher zu halten.</p>
</blockquote>
<p>Das bezweifle ich bereits. Was ist denn die konkrete Anwendung hier? Warum tut es nicht eine Datenbank?<br />
Wenn du mir beantworten kannst, um welchen Faktor zum Beispiel SQLite tatsächlich zu langsam ist, kann man anfangen zu optimieren.<br />
Auf welcher Kategorie von Hardware soll das überhaupt laufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468657</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Mon, 21 Sep 2015 18:09:14 GMT</pubDate></item><item><title><![CDATA[Reply to riesiger bitvector und Adressierung der bits on Mon, 21 Sep 2015 18:22:44 GMT]]></title><description><![CDATA[<p>GentleGiant schrieb:</p>
<blockquote>
<p>ich benötige eine sehr speichersparende Möglichkeit um viele Strings im Speicher zu halten.</p>
<p>- die Struktur muss dabei eigentlich nur <strong>insert</strong> und <strong>contains</strong> unterstützen.</p>
</blockquote>
<p>Und vielleicht in der einen Richtung unglaubhaft? Bloomfilter, quasi 4 Bits pro beliebig langem abzuspeichernden String.</p>
<p>In beiden sicher, trie, quasi nur ein byte pro abzuspeicherndem byte.</p>
<p>Möchstest Du aber *sehr* viele beliebige Strings anspeichern und sicher schnell befragen können, und arbeitest für bekannte Hochlohnzahler wie die arabischen Spekulanten, dann ruf mich an, ich forsche gern ein Jahr vergebens bezahlt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468659</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 21 Sep 2015 18:22:44 GMT</pubDate></item></channel></rss>