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

20.04.2018

C++ Guns: Levenshtein-Distanz - Teil 1

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

Die Levenshtein-Distanz (auch Editierdistanz) zwischen zwei Zeichenketten ist die minimale Anzahl von Einfüge-, Lösch- und Ersetz-Operationen, um die erste Zeichenkette in die zweite umzuwandeln. Die Laufzeit Komplexität liegt bei quadratisch. Wie schnell ist das? Getestet werden 1000 Sequencen mit 200 Zeichen Länge. Die erste Implementierung von Wikipedia lasse ich im Debug Modus laufen und komme […]

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.

08.04.2018

Python's 'Nase' + Python's 'Essen'

Filed under: Allgemein — Thomas @ 14:04

Lecker mjam mjam schmatz quetsch schluck satt. Python - what else did you think?

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

« Newer PostsOlder Posts »

Powered by WordPress