C++Guns – RoboBlog

08.06.2012

Linux RAM Verbrauch

Filed under: Allgemein — Tags: , — Thomas @ 07:06

Systemweit: http://stackoverflow.com/questions/349889/how-do-you-determine-the-amount-of-linux-system-ram-in-c/350046#350046 #include < sys/sysinfo.h > int sysinfo(struct sysinfo *info); struct sysinfo { long uptime; /* Seconds since boot */ unsigned long loads[3]; /* 1, 5, and 15 minute load averages */ unsigned long totalram; /* Total usable main memory size */ unsigned long freeram; /* Available memory size */ unsigned long sharedram; /* Amount […]

19.05.2012

Nochmal Linux + Canon Powershot SX 130

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

Ich hatte ja schon mal kurz gtkam erwähnt um an die Dateien der Kamera zu kommen. Siehe [1] Nun ist es so, wenn man eine 2GB Datei (HD Videos) laden will, erst mal 2GB Speicher reserviert werden. Leider hat nicht jeder 2GB am Stück frei. Wenn man die Datei überhaupt laden kann, kann es sehr […]

08.05.2012

Eclipse Code ausdrucken

Filed under: Allgemein — Tags: , , — Thomas @ 17:05

Da die Print Möglichkeiten aus Eclipse heraus ziemlich bescheiden sind, habe ich mal etwas gesucht und das gefunden[1] : a2ps --verbose --landscape --columns=2 --rows=1 --line-numbers=5 --tabsize=2 --pretty-print \ --highlight-level=normal --sides=duplex --pro=color FILENAME [1] http://stackoverflow.com/questions/252975/how-to-print-out-code

18.04.2012

Wahrscheinlichkeit, dass von X Leute zwei am selben Tag Geburstag haben...

Filed under: Allgemein — Tags: , — Thomas @ 11:04

Scheiß Wahrscheinlichkeitsrechung geht gegen jede Intuition. Anz. Leute WK für Gebtag am selben Tag 25 56% 24 53% 23 50% 22 47% 21 44% Hier noch ein nettes Bildchen... Und mein Programm: template< typename T > std::ostream& operator const& vec) { for(size_t i = 0; i< vec.size(); i++) o

09.04.2012

Faster Code – Part 6 – Sprungvorhersage again

Filed under: Allgemein — Tags: , , , — Thomas @ 16:04

Wie im letzten Post angekündigt, gibt es jetzt die genauere Analyse meines Tests. Hier erstmal das Programm: int mymin(int a, int b) __attribute__ ((noinline)); int mymin(int a, int b) { asm (""); if (b < a) return b; return a; } int mymin2(int a, int b) __attribute__ ((noinline)); int mymin2(int a, int b) { asm […]

06.04.2012

Faster Code – Part 6 – Sprungvorhersage

Filed under: Allgemein — Tags: , , , — Thomas @ 19:04

Es ist ja so, dass ein Befehl auf der CPU nicht nur ausgeführt wird, er muss auch aus dem Speicher geladen und dekodiert werden. Heutige CPUs dekodieren schonmal den nächsten Befehl, wärend der aktuelle noch ausgeführt wird. Und der übernächste wird zeitgleich aus dem Speicher geholt. Das nennt man Prozessor-Pipeline [1] und das ist cool. […]

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

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 […]

« Newer PostsOlder Posts »

Powered by WordPress