C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Welcher Container?

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Falco Hirschenberger
Guest





PostPosted: Wed Nov 12, 2003 10:47 am    Post subject: Welcher Container? Reply with quote



Hallo,

Ich möchte ein Prefetching System entwickeln, welches über eine
Iteratorschnittstelle entweder aus dem Speicher oder von Platte, Slices von
großen 3d Bilddaten liest und in einem Prefetchingpuffer speichert, damit
eine Anwendung dann schell auf die schon aufbereiteten Daten zugreifen
kann.

Nun frage ich mich welcher Container für sowas am geeignetsten ist, ich
möchte in einem Intervall um die aktuelle Position im Bild, die Slices
prefetchen.
Ich hatte mir gedacht mit 2 std::deques (eine für jede Richtung) könnte man
sowas machen, aber ich muss ggf. nicht nur Sliceweise, sondern auch größere
"Sprünge machen", ist da eine Deque noch sinnvoll.

Als andere Möglichkeit dachte ich mir eine std::map, mit Index als Schlüssel
und Slice als Wert, dann könnte ich einfach überprüfen ob sich ein index im
Puffer befindet, und die Slices mit dem größten "Abstand" zum aktuellen
Slice löschen. Aber wie sieht es mit der Performance aus?

Beim Laden von Platte macht das nicht so viel aus, weil das ja um
Größenordnungen langsamer ist, aber beim Laden aus dem Speicher sollte
schon eine "flotte" ein-/ausgabe möglich sein. (Wenn es überhaupt Sinn
macht zu prefetchen, muss man halt benchmarken)

Hatte auch schon Dinge wie Ringpuffer angedacht.

Was denkt Ihr?

Mit freundlichen Grüßen

Falco
--
Falco Hirschenberger <hirschen (AT) fraunhofer (DOT) de>
ICQ: 66107367

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Albrecht Fritzsche
Guest





PostPosted: Wed Nov 12, 2003 9:51 pm    Post subject: Re: Welcher Container? Reply with quote



Falco Hirschenberger wrote:
Quote:
Ich möchte ein Prefetching System entwickeln, welches über eine
Iteratorschnittstelle
^^^^^^^^^^^^^^^^^^^^^^

Was meinst Du damit? Wenn das heisst, dass das Iterieren ueber
alle Elemente die haeufigste Anwendung ist, dann kommen IMO nur deque
und vector infrage.

Quote:
und in einem Prefetchingpuffer speichert, damit
eine Anwendung dann schell auf die schon aufbereiteten Daten zugreifen
kann.

In welcher Form? Wahrscheinlich reicht auch hier wieder ein vector?

Quote:

Nun frage ich mich welcher Container für sowas am geeignetsten ist, ich
möchte in einem Intervall um die aktuelle Position im Bild, die Slices
prefetchen.
Ich hatte mir gedacht mit 2 std::deques (eine für jede Richtung) könnte man
sowas machen, aber ich muss ggf. nicht nur Sliceweise, sondern auch größere
"Sprünge machen", ist da eine Deque noch sinnvoll.

Als andere Möglichkeit dachte ich mir eine std::map, mit Index als Schlüssel
und Slice als Wert, dann könnte ich einfach überprüfen ob sich ein index im
Puffer befindet, und die Slices mit dem größten "Abstand" zum aktuellen
Slice löschen. Aber wie sieht es mit der Performance aus?

Genau - daher solltest Du Dir erst klar werden, welche Anforderungen Du
bzw Deine Anwendung an einen Container hat. Also, erst das Programm
sozusagen designen, die Funktionen festlegen und wichten (ist
indizierter Zugriff die wichtigste/haeufigste Funktion bzw. das Loeschen
von Daten, etc...). Danach kannst Du Dir dann den COntainer nehmen bzw
selbst basteln - mitunter kann zB eine Klasse mit zB zwei Containern
Wunder vollbringen

std::vector<Polygon> polygone_;
typedef std::vector<int> PolygonSet; // --> Indizees in polygone_
std::map<BoundingBox, PolygonSet> cullingTree_;

Das ist jetzt an den Haaren herbeigezogen, zeigt aber, dass man nicht
immer an einem Container festhalten muss.

Ali

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.