C++Guns – RoboBlog

08.05.2018

C++ Guns: tokenizer

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

Hier mal ein Versuch ein hübscheren tokenizer zu bauen: Ist auf alle Fälle Millionen mal besser als Dieses hier: https://gist.github.com/ofan/721464 hf

02.05.2018

C++ Guns: Comment to The Sound of Sorting - "Audibilization" and Visualization of Sorting Algorithms

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

Also das Video 15 Sorting Algorithms in 6 Minutes ist ja mal sau genial. Am besten hört sich der Radix Sort an ;) Sehr interessant diese vielen Sortieralgorithmen. Muss man sich unbedingt mal anschaun. Aber der Code für dieses Projekt ist natürlich wieder .... ;) In dem Video werden die Anzahl der Vergleiche und Array […]

24.04.2018

C++ Guns: Levenshtein-Distanz - Teil 3

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

Im dritten Teil geht es um die Parallelisierung mit OpenMP. Auf dem Arbeitsrechner werden 1000 zufällig gefüllte Strings in 71.6 sec. Der Algorithmus ist trivial über die äusserste Schleife zu parallelisieren, da ein String unabhänig der anderen Berechnet werden kann. Um eine schnelle Übersicht über die systime zu bekommen, wird das Programm mittels dem Hilfsprogramm […]

23.04.2018

C++ Guns: branch free min() with Conditional Move CMOVcc

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

In der Regel wird die min() Funktion mittels Verzweigung implementiert. Ohne zusätzliche Optimierung führt dies zu einem Sprung im Code und damit zu Branchs Mispredicts. Dies ist gerade beim HPC Code ziemlich schlecht, da im Fall einer falscher Sprungvorhersage die CPU Pipeline wieder zurückgesetzt werden muss. Es gibt aber Alternativen: Conditional Move CPU Instruktionen. Je […]

22.04.2018

C++ Guns: Levenshtein-Distanz - Teil 2

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

Von der Compiler Optimierung O3 habe ich mir keine weiteren Geschwindigkeitsgewinn erhofft, aber dass das Programm doppelt so langsam! wurde, da stand mir dann doch der Mund offen ;) Das ist btw. auch das erste mal in meinem Programmiererleben, dass O3 die Laufzeit wirklich deutlich verschlechtert. Bisher hatte ich nur davon gehört. Ein schneller Blick […]

11.04.2018

C++ Guns: Return function from function with same signature

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

Funktionen können Funktionen als Rückgabe Type/Wert haben, solange sie die selbe Signatur vorweisen. Also z.B. alles Binary Funktionen mit Argumenten von Type double.

03.04.2018

C++ Guns: sort() mit Visitor

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

Wen hat es nicht schon einmal gestört, dass std::sort() so transparent arbeitet? Manchmal muss man wissen welche Elemente beim Sortieren wohin verschoben werden. Sozusagen eine Permutation. Manchmal ist es möglich, den zu sortierenden Daten eine ID mitzugeben. Aber oft nicht. Zum Beispiel arbeite ich mit 2D Punkten. Diese liegen natürlich schön dicht gepackt im std::vector, […]

23.03.2018

C++ Guns: concept: force function return type

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

Das Problem von impliziten Konversionen in C/C++ ist nicht neu. Wenn integer in floats und floats in integer kopiert werden und dabei die Werte der Zahlen verändert werden, kann das in wissenschaftlichen Anwendungen katastrophale Auswirkungen haben. Es müssen verschiedene Szenarien beachtet werden. So ist z.b. das kopieren eines 32bit integer in ein 64bit float kein […]

15.03.2018

C++ Guns: Quick Q: What is a non-trivial constructor in C++?

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

https://isocpp.org/blog/2018/03/quick-q-what-is-a-non-trivial-constructor-in-cpp Super und kurze Zusammenfassung was triviale Konstruktoren sind und wie man sie bekommt. Es zeigt sich, dass man für reine Datentypen besser auf viele lustige c++ Features verzichten soll. Wenn man einfach _garnichts_ programmiert und nur seine member typen deklariert, ja noch nicht mal default initialisieren, steht man am besten da. Auf einmal wird […]

27.02.2018

C++ Guns: Templated class specialization where template argument is a template

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

Okay das ist mit Abstand das krasseste was ich seit langem mit Templates gemacht habe, obwohl die Aufgabe doch recht klar und einfach ist. Der Code ist von der Syntax her auch noch irgendwo okay. Naja, vllt. auch nicht. Ich habe meine Experimentelle Graph Klasse mit entsprechenden Iteratoren. Datencontainer und Algorithmus trennen und mit Iteratoren […]

« Newer PostsOlder Posts »

Powered by WordPress