C++Guns – RoboBlog

30.03.2012

Faster Code – Part 5 - huge pages

Filed under: Allgemein — Tags: , , , — Thomas @ 21:03

Tach und Willkommen beim fünften Teil von Faster Code. Heute geht es um huge page. Eine Page ist normal 4kb groß. Eine hugepage hat 2MB, 4MB oder nocht viel mehr. Hoch zu 1GB. Je nach System, CPU u.s.w. Die Größe ermittelt man so: $ grep Huge /proc/meminfo HugePages_Total: 46 HugePages_Free: 46 HugePages_Rsvd: 0 HugePages_Surp: 0 […]

28.03.2012

Faster Code – Part 4 – align memory again

Filed under: Allgemein — Tags: , , , — Thomas @ 09:03

Wie ich im letzten Post erwähnt habe, ist es gut wenn Variablen im RAM ausgerichtet vorliegen. Nun muss man aber noch bedenken, dass nicht einzelne Variablen aus dem RAM geladen werden, sondern ganze Cache-Zeilen. Nun wäre es doch auch cool, wenn Arrays auf eine Seitenbreite ausgerichtet sind. Man stelle sich nur mal vor, zwei Threads […]

27.03.2012

Linux + Canon Powershot SX 130

Filed under: Allgemein — Tags: — Thomas @ 22:03

Es funktioniert... zumindest kann man Bilder runterladen. Den Auslöser vom PC aus ansteuern geht wohl nicht. Ich habe gtkam bzw. gtkam-gimp bzw. gphotofs benutzt. Jeweils in der neusten Version. http://www.gphoto.org/

Faster Code - Part 3 - align memory

Filed under: Allgemein — Tags: , , , — Thomas @ 18:03

Variablen deren Adressen ein vielfaches von 4Byte (oder 8Byte auf 64Bit???) sind, können schneller aus dem RAM geladen werden. Man sollte also bei oft benutzen Variablen darauf achten und nicht nur blind der Compiler Optimierung vertrauen. Gerade bei Sachen wie SSE ist es gut, wenn die Array Elemente auf 16Byte ausgerichtet sind, da ein SSE […]

Faster Code - Part 2

Filed under: Allgemein — Tags: , , , — Thomas @ 10:03

Es geht um std::vector Das i-te Element von vector a kann statt mit a[i] e?zienter mit T::iterator ai = a.begin(); T element = *(ai + i); dereferenziert werden. Dies entspricht der internen Arbeitsweise des Indexoperators, jedoch erzeugt dieser bei jedem Elementzugri? einen Iterator auf den Anfang des Containers. Gerade in Schleifen, in denen große Datenströme […]

26.03.2012

Faster 64Bit C Code - Part1

Filed under: Allgemein — Tags: , , , — Thomas @ 21:03

Auf 64Bit Plattformen ist in der Regel ein Int 32Bit groß. Macht man damit Pointerarithmetik muss die 32Bit Zahl erst zu eine 64Bit zahl convertiert werden, bevor sie verrechnet wird. Pointer sind auf 64Bit Plattformen auch 64Bit groß. Durch den Einsatz von size_t statt int und ptrdiff_t statt int* lässt sich das verhindern. Siehe http://www.viva64.com/en/a/0050/ […]

24.03.2012

Dreck

Filed under: Allgemein — Tags: — Thomas @ 23:03

Wollte eine Audio CD am Rechner meiner Mutter abspielen. Nur dumm wenn die Soundkarte nicht installiert ist. Nur welche Soundkarte ist installiert? Windows kann einem das ja nicht direkt sagen. Unter linux hätte ich ein lspci in der Konsole getippt und wüsste es. Es gab aber mal diverse Tool die einem sagen können, welche Hardware […]

20.03.2012

Linux Cache leeren

Filed under: Allgemein — Tags: , — Thomas @ 18:03

Um den “pagecache” aufzuräumen sync; echo 1 > /proc/sys/vm/drop_caches Um “dentries und inodes” aufzuräumen sync; echo 2 > /proc/sys/vm/drop_caches Um alles aufzuräumen sync; echo 3 > /proc/sys/vm/drop_caches

19.03.2012

Image entropy

Filed under: Allgemein — Thomas @ 23:03

Ich habe versuch ein Programm zu schreiben, was anzeigen kann wieviel Zufall in einem Bild steckt. Nur kann man den Zufall nicht wirklich messen. Ich habe mir darum folgendes ausgedacht: Das komprimieren von Daten verringert ja ihre Größe. Und je weniger zufällig die Daten sind, desto besser kann man sie komprimieren. Also nehme ich das […]

Gegen die Langeweile

Filed under: Allgemein — Thomas @ 19:03

Gegen die Langeweile http://roboblog.fatal-fury.de/?page_id=1153

Older Posts »

Powered by WordPress