Optimierung eines Rust AV1-Decoders: Vermeidung unnötiger Nullsetzungen und Optimierung von Strukturvergleichen
2025-05-22
Durch den Vergleich der Leistung des Rust-basierten AV1-Decoders rav1d mit dem C-basierten dav1d identifizierte der Autor mithilfe eines Sampling-Profilers zwei Performance-Engpässe. Der erste war die unnötige Nullsetzung eines Puffers in rav1d auf ARM-Architektur, was zu Leistungseinbußen führte. Der zweite war eine ineffiziente Implementierung von Strukturvergleichen in rav1d. Durch die Verwendung von `MaybeUninit` zur Vermeidung unnötiger Nullsetzungen und die Optimierung von Strukturvergleichen verbesserte der Autor die Leistung von rav1d um fast 2%.
Entwicklung