- Es gab einen Bericht, dass FreeBSD beim Booten 7 % der Zeit dafür verwendet, die SYSINITs per Bubble Sort zu sortieren
- Der Code stammt aus dem Jahr 1996; damals gab es nur etwa 30 zu sortierende SYSINITs, inzwischen sind es mehr als tausend, wodurch der Vorgang deutlich länger dauert
- In einem aktuellen Commit wurden die SYSINIT-Arrays in SLISTs umgewandelt, sodass Merge Sort möglich wird und sich neue SYSINITs auch schneller hinzufügen lassen
- Merge Sort ist bis zu etwa 100-mal schneller
- Auf Firecracker-Basis lassen sich so von insgesamt 28 ms Bootzeit 2 ms einsparen
3 Kommentare
Bei Datensätzen unterhalb einer gewissen Größenordnung war es vermutlich sinnvoll, kleinen und leicht verständlichen Code zu verwenden.
Darum gibt es wohl auch heute noch viele verbliebene Anwendungsfälle langsamer Algorithmen.
(Das ist vielleicht ein Vorurteil, aber) wenn sich daran jemand stößt, habe ich stark den Eindruck, dass es sich um jemanden handelt, der nicht hilft, sondern nur viel meckert.
FreeBSD verwendet beim Booten 7 % der Zeit darauf, die SYSINITs per Bubble Sort zu sortieren
Hacker-News-Kommentar
bubblesortdurchmergesortersetzt, was die Bootzeit deutlich verbessert hat.bubblesortwar kein Versehen und funktionierte viele Jahre lang gut, bis ein bestimmter Anwendungsfall seine Ineffizienz deutlich machte.bubblesortauszuführen.mergesortbrachte netto 5 Zeilen weniger Code und eine „100-mal schnellere“ Bootzeit.bubblesortkönnte von Faktoren wie der Anzahl der Aufgaben beeinflusst worden sein.mergesortist ein Beispiel dafür, dass kleine Änderungen für die Gesamtleistung einen wichtigen Unterschied machen können.bubblesortinfrage.bubblesortin den SYSINITs ausgelöst.