Я разборе значения, разделенные табуляцией:Как ускорить UTF-8 обработки строк
pub fn parse_tsv(line: &str) -> MyType {
for (i, value) in line.split('\t').enumerate() {
// ...
}
// ...
}
perf
сверху содержит str.find
. Когда я смотрю в сгенерированном коде сборки, есть много работ, связанных с кодировкой UTF-8 символов в &str
.
И относительно медленное наблюдение. Это занимает 99% времени выполнения.
Но найти \t
Я не могу просто найти один байт \t
в строке UTF-8.
Что я делаю неправильно? Что делает Rust stdlib неправильно?
Или, может быть, в Rust есть некоторая строковая библиотека, которая может представлять строки просто байтами «u8»? Но со всеми split()
, find()
и другими методами?
Вы компиляцию с оптимизациями на? ('--release' с грузом) – huon
@huon конечно – vladon
Какая разница в скорости, если вы используете' '\ t" 'вместо этого? – Shepmaster