C++Guns – RoboBlog

10.05.2019

C++ Guns: play with threads and future

Filed under: Allgemein — Tags: — Thomas @ 13:05

Um schnell zu testen ob ein Rechner erreichbar ist, kann man ihn pingen. Der ping timeout dauert aber gern mal eine Sekunde. Wenn 10 Rechner nicht erreichbar sind, wartet man auch 10 Sekunden auf das Programm. Statt potentiell nur eine Sekunde. Die ping Anweisung kann man gut parallel ausführen. Zeit für std::async und std::future Hier […]

C++ Guns: C++20 class types in non-type template parameters

Filed under: Allgemein — Tags: — Thomas @ 12:05

Mit C++20 und GCC9 wir können als Template Parameter nun auch einfach eigenen Typen angeben. Ohne uns mit Workarounds herumschlagen zu müssen. Ein einfaches Beispiel sollte es verdeutlichen

01.05.2019

ACCU 2019 Videos

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

very nice! So Zeug hab ich bei meiner BA gebracht Optimising a small real-world C++ application - Hubert Matthews [ACCU 2019] This is a hands-on demonstration of optimising a small real-world application written in C++. It shows how measurement tools such as strace, perf tools, valgrind and cachegrind on Linux can be used to find […]

14.04.2019

Protected: Sandras Hochzeit

Filed under: Allgemein — Thomas @ 20:04

There is no excerpt because this is a protected post.

14.03.2019

C++ Guns: floating point bit round - p0476r2 Bit-casting object representations

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

C++20 Low-level code often seeks to interpret objects of one type as another: keep the same bits, but obtain an object of a different type. Doing so correctly is error-prone: using reinterpret_cast or union runs afoul of type-aliasing rules yet these are the intuitive solutions developers mistakenly turn to. Attuned developers use aligned_storage with memcpy, […]

06.03.2019

Profiler read/write miss Gedanken

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

Profiler read/write miss Gedanken write miss: unterscheiden zwischen permanenten und temporäre Daten: Permanente Daten: wohl unausweichlich, denn die neuen Daten MÜSSEN ja vom Chache in den Hauptspeicher geschrieben werden. Temporäre Daten: eventuell vermeidbar, wenn man sie an einer späteren Stelle im Code erstellt. Wann immer Daten in den Cache geschrieben werden, fliegen andere Daten raus […]

02.03.2019

C++ Guns: A Sorted Data Type

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

Mit dem C++ Typsystem ist es möglich Informationen und Algorithmen in das Programm zu codieren, die schon vor der Compilezeit fest stehen. Wie würdet ihr folgendes Problem lösen: Ein Algorithmus, zum Beispiel die binäre Suche, benötigt einen bereits sortieren Datensatz. Den Datensatz zu sortieren und danach die Suche anzuwenden ist trivial. Aber in einem anderen […]

22.02.2019

C++ Guns: rvalue referenz, forwarding referenz, universal referenz WTF?

Filed under: Allgemein — Tags: — Thomas @ 18:02

Die gute Nachricht: Normale Menschen müssen das alles nicht verstehen. Auch Anwendungs- Programmierer und library designer brauchen die Details nicht zu wissen. Ihr könnt meine Regeln durchlesen, daran halten und dann STOP. Die Details sind für Leute, die sich einem 1.5h Vortrag über && anhören können. Streng genommen wird der Begriff "universal referenz" nicht im […]

C+ Guns: ACPL ownership transfer

Filed under: Allgemein — Tags: — Thomas @ 18:02

acpl::moveOwnership bietet im Gegensatz zu std::move den Vorteil, dass ein move-from const Variablen einen Fehler zur Compilezeit erzeugt. Zwei Beispiele sollen ownership transfer verdeutlichen. Daten in ein Type moven und dort speichern. Daten entweder kopieren oder durch eine Funktion moven. Move von const Variablen ist nicht möglich, da die Variablen geändert werden würden, was nicht […]

15.02.2019

C++ Guns: class template specialization with concepts aka C++20 std::ranges::value_type

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

You can create a constrain for a class. And another constrain for the same class. Isn't this crazy stuff? With this we can build something like an identity function for types, like std::type_identity, for value_type. It's something like the C++17 non-member functions size() and empty(). Why must value_type be a member? It can be a […]

Older Posts »

Powered by WordPress