2016-03-30 3 views
2

私はPistonの画像の箱を使ってJPEG画像の各ピクセルの大きさと色を読み取っていますが、プログラムのコンパイルはとても遅いです。ここでPiston's image crateを使ってプログラムをコンパイルするのが遅い

は私のプログラム例です:貨物ビルドまたは貨物のビルドを使用して、これをコンパイルする

extern crate image; 

fn main() { 
    let img = image::open("example.jpg"); 
} 

を--release少なくとも13秒私は、ソースコードを変更したすべての時間がかかります!私はUbuntuの15.10を使用していcargo 0.8.0-nightly (28a0cbb 2016-01-17)

貨物--versionrustc 1.7.0 (a5d1e7a59 2016-02-29)

出力:rustc --version

出力。

+0

画像とそのDEPS、2の初期のコンパイル:15.20elapsed、ちょうどそのシンプルlib.rsファイル、0変更するための時間を再コンパイル:22.58elapsedを。実際にはあまり良くありません。これはデバッグビルドと同じです!しかし、私はそれを改善するためのアイデアを持っています.. – bluss

+3

その特定の問題を解決するために[PR'd](https://github.com/PistonDevelopers/image/pull/518).. – bluss

+0

@bluss私はあなたが答えを書くことを願っています – Shepmaster

答えて

2

ローカルの内枠を作成し、内部にextern crate imageを配置します。インナークレートが変わらない限り、ルートクレートのコンパイルは速くなります(2秒)。

ルート/ Cargo.toml

[dependencies] 
wrapper = { path = "wrapper" } 

ルート/ SRC/main.rs

extern crate wrapper; 

fn main() { 
    let _img = wrapper::open(); 
} 

ルート/ラッパー/ Cargo.toml

[dependencies] 
image = "*" 

ルート/ラッパー/ SRC/lib.rs

extern crate image; 

pub use image::{ImageResult, DynamicImage}; 

pub fn open() -> ImageResult<DynamicImage> { 
    image::open("example.jpg") 
} 
1

コンパイラの速度向上に引き続き取り組んでいますが、いくつかのクレートは他のものよりもコンパイルが遅くなっています。私はこの特定の箱についてあまり知らないが、これは今の場合かもしれない。

関連する問題