Ich bin Parsen Tab-separierte Werte:Wie zu beschleunigen UTF-8-String-Verarbeitung
pub fn parse_tsv(line: &str) -> MyType {
for (i, value) in line.split('\t').enumerate() {
// ...
}
// ...
}
perf
oben enthält str.find
. Wenn ich in den generierten Assembler-Code schaue, gibt es viel Arbeit in Bezug auf die UTF-8-Codierung der Symbole in &str
.
Und es ist relativ veeeeery langsam. Es dauert 99% der Ausführungszeit.
Aber zu finden \t
Ich kann nicht einfach nach einem Byte \t
in einer UTF-8-Zeichenfolge suchen.
Was mache ich falsch? Was macht Rust stdlib falsch?
Oder vielleicht in Rust gibt es eine einige String-Bibliothek, die Strings einfach durch 'u8' Bytes darstellen kann? Aber mit allen split()
, find()
und anderen Methoden?
kompilieren Sie mit Optimierungen auf? ('- Freigabe 'mit Ladung) – huon
@huon natürlich – vladon
Was ist der Geschwindigkeitsunterschied, wenn Sie stattdessen" "\ t" 'verwenden? – Shepmaster