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 […]
08.06.2012
19.05.2012
Nochmal Linux + Canon Powershot SX 130
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
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...
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
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
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
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
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
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
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 […]