C++Guns – RoboBlog

30.08.2018

FORTRAN: 3x3 matmul intrinsic vs. hand crafted

Filed under: Allgemein — Tags: — Thomas @ 20:08

Verglichen wird der erzeugte Assembler Code der internen Fortran matmul() Routine mit einer von Hand geschriebenen Matrix Multiplikation. Getestet wird für 3x3 Matrizen mit zur Compilezeit bekannter Größe. Sonst könnte man den vom FORTRAN Compiler erzeugten Assembler Code gar nicht mehr nachvollziehen. Und hier von Hand Getestet wird mit gfortran 7.3.0 -O1. Die Hand Version […]

23.08.2018

C++ Guns: Solve std::forward_list no size() method problem

Filed under: Allgemein — Tags: — Thomas @ 21:08

Why has forward_list no size() method? In short: Its about performance. A single linked list size() function has a asymptotic complexity of O(n). We do not usually need something like that. So we don't have something. The second reason is: For a O(1) size() function, it would increase the size of std::forward_list by 8 byte. […]

19.08.2018

C++ Guns: Are lists evil?

Filed under: Allgemein — Tags: — Thomas @ 21:08

The problem seems to be an interesting little exercise that John Bentley once proposed to me: Insert a sequence of random integers into a sorted sequence, then remove those elements one by one as determined by a random sequence of positions: Do you use a vector (a contiguously allocated sequence of elements) or a linked […]

15.08.2018

C++ Guns: why C++ ist better than C. Or: keyword restrict is useless

Filed under: Allgemein — Tags: — Thomas @ 19:08

Das restricted keyword in C restrict keyword...is basically a promise to the compiler that for the scope of the pointer, the target of the pointer will only be accessed through that pointer (and pointers copied from it). In C++ geben wir keine Versprechen. Grundsätzlich nicht. Das Beispiel von cppreference.com verdeutlich das Optimierungspotential ziemlich anschaulich. Gegeben […]

05.08.2018

C++ Guns: semantics is important

Filed under: Allgemein — Tags: — Thomas @ 19:08

Einfach N Zufallszahlen ziehen ist einfach. Eigentlich gibt es darüber nicht viel zu sagen, aber es ist ein schönes Beispiel für Semantik. (Dank an Ben für die Inspiration). Wir müssen immer den Spagat zwischen Lesbarkeit und Performance machen. Manchmal sind die Verantwortlichkeiten der Funktionen nicht klar zu definieren. Soll die Funktion, welche N Zufallszahlen zieht, […]

C++ Guns: Assembler RMW (Read Modify Write) instructions

Filed under: Allgemein — Tags: — Thomas @ 16:08

Bin Heute über diesen GCC Bugfix gestolpert GCC 8 stopped using RMW (Read Modify Write) instructions on x86. Es gibt also Assembler Instruktionen die in einem Zug einen Wert laden, den Wert ändern, und ihn wieder zurück schreiben. Dabei spielt es keine Rolle, ob dabei erst noch ein Pointer dereferenziert werden muss, oder die Variable […]

03.08.2018

C++ Guns: Multi-Arraylist with C++17 P0184R0 Sentinel

Filed under: Allgemein — Tags: — Thomas @ 15:08

P0184R0 Differing begin and end types in range-based for. Sentinel - value to terminate a loop after it was read Let me try something. A list implemented as array - Multiple lists stored in a single array. This can be helpful if the lists are very short e.g. less than 10 items. For this example, […]

Powered by WordPress