- Rust 100%
| src | ||
| tests | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
nc-sortier-check (Rust)
Rust-Port von ~/bin/nc-sortier-check.py. Prüft das Inventar
(nc-inventar.py → pfad<TAB>groesse) auf Sortierfehler. Reine Analyse:
kein Netz, keine Schreibzugriffe.
Warum
Das Python-Skript läuft über Inventare mit hunderttausenden Zeilen und wendet pro Pfad fünf reguläre Ausdrücke an. Der Rust-Port startet in Millisekunden, braucht den halben Speicher und ist auf 1 Mio. Zeilen rund 6× schneller — bei byte-identischer Ausgabe.
Bauen und installieren
cargo build --release
install -m 755 target/release/nc-sortier-check ~/bin/nc-sortier-check
Benutzen
nc-sortier-check [inventar.tsv]
Ohne Argument gilt derselbe Default wie im Original:
/home/pandi/.hermes/cache/scratch/nc-inv-ssd.tsv.
Abschnitte der Ausgabe:
- Größte Gruppen (Ebene 2), Top 25
- Lose Dateien direkt in
SSD-Share - Verdächtige Namen:
Kopie/(1),ohne-Datum,Doppel-Endung - Gleicher Dateiname in mehreren Ordnern (Top 12)
- Identische Größe > 2048 Byte als Dublettenverdacht (Top 12)
- Jahresordner vs. Datum im Dateinamen
Abweichung zum Python-Original
Der Abschnitt „Jahresordner passt nicht zum Dateinamen“ war im Original
toter Code: re.search(r"/(\d{4})-\d\d-\d\d", os.path.basename(p)) kann nie
treffen, weil os.path.basename() keinen / enthält. Der Rust-Port prüft den
Dateinamen ohne führenden Slash und meldet Abweichungen tatsächlich. Alle
anderen Abschnitte sind unverändert.
Tests
cargo test
- 8 Unit-Tests für Gruppierung, Zähl-Reihenfolge, Parser, Schwellwerte und den reparierten Jahresordner-Check.
- 1 Paritätstest, der das Python-Original und das Rust-Binary auf derselben Fixture laufen lässt und die Ausgaben byte-genau vergleicht.
Messung (2026-10-29)
Inventar mit 1.000.000 Zeilen (47 MB), 3 Läufe je Implementierung:
Rust 0.55–0.56 s 242 MB RSS
Python 3.57–3.62 s 458 MB RSS
Startzeit auf einer 100-Zeilen-Datei (10 Läufe): Rust 3,1 ms, Python 18,5 ms.