6× schnellere binäre Suche: Vom kompilierten Code zur mechanischen Sympathie
Faster binary search: from compiled code to mechanical sympathy

Wie lässt sich rechenintensiver Python-Code beschleunigen? Oft reichen ein guter Algorithmus, eine kompilierte Sprache und Parallelisierung. Doch manchmal braucht es mehr. In diesem Artikel zeigt der Autor, wie er eine binäre Suche in scikit-learns Gradient Boosting um das Sechsfache beschleunigt hat – durch ein besseres Verständnis der CPU. Er erklärt, wie Branch Mispredictions die Leistung beeinträchtigen, und präsentiert eine branchless Implementierung, die auf vorhersehbare Ausführung setzt. Zusätzlich werden weitere Optimierungen wie das Entfernen von Bounds Checks und das Vorberechnen von Werten demonstriert. Ein praxisnaher Einblick in die Welt der Low-Level-Optimierung.
Die binäre Suche ist leider sehr unvorhersehbar, wenn die Eingabedaten gleichmäßig verteilt sind – die CPU kann nicht zuverlässig erraten, welcher Pfad genommen wird.