Можно ли улучшить низкую производительность почтового ящика Rust? - PullRequest
0 голосов
/ 06 декабря 2018

Вот моя тестовая программа:

extern crate zip;

use std::fs::File;
use std::io::copy;
use zip::write::FileOptions;
use zip::ZipWriter;

fn main() {
    let mut src = File::open("/tmp/src.mxf").unwrap(); // 624 Mb file.
    let dest = File::create("/tmp/test.zip").unwrap();
    let mut zip_writer = ZipWriter::new(dest);

    zip_writer
        .start_file("src.mxf", FileOptions::default())
        .unwrap();
    copy(&mut src, &mut zip_writer).unwrap();

    zip_writer.finish().unwrap();
}

С программой, скомпилированной в режиме выпуска:

time ./zip_bench
./zip_bench  62,68s user 146,21s system 99% cpu 3:28,91 total

Тот же файл, сжатый с использованием системы zip двоичный:

time zip /tmp/test2.zip /tmp/src.mxf
zip /tmp/test2.zip /tmp/src.mxf  13,77s user 0,19s system 99% cpu 13,965 total

Коэффициент времени между системой и Rust zip составляет около 14x (для аналогичного выходного файла с незначительной разницей в размерах).

Я что-то не так делаю в коде, который может объяснить производительность Rust?Как я могу улучшить его, чтобы приблизиться к производительности системы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...