画像を処理するマルチスレッドアプリケーションを作成していますが、シーケンシャルバージョンの方が高速です。なぜですか?

Cloules

スレッドに静的なBufferedImageがあり、各スレッドに画像の一部のセクションを変更させています。各ピクセルが別々に行われるため、処理は非常に独立していますが、シーケンシャルバージョンの方が高速です。どうすれば修正できますか?

編集1:ここでコードはどのように見えるか

public static void main(String[] args) throws IOException, InterruptedException {
    long startime, endtime;
    long Time;
    startime = System.currentTimeMillis();
    //also tried to use nano

    WorkingThread T1 = new WorkingThread("input.jpg");
    WorkingThread T2 = new WorkingThread();
    WorkingThread T3 = new WorkingThread();
    WorkingThread T4 = new WorkingThread();

    T1.start();
    T2.start();
    T3.start();
    T4.start();

    T1.join();
    T2.join();
    T3.join();
    T4.join();

    endtime = System.currentTimeMillis();
    Time = endtime - startime;
    System.out.println("The time consumed in miliseconds is  " + Time);
}

public class WorkingThread extends Thread {

  public static BufferedImage img;
  public static int p;
  public int nb;
  public static int width, height;

  public WorkingThread(String file) throws IOException {
    File f = new File(file);
    img = ImageIO.read(f);
    width = img.getWidth();
    height = img.getHeight();
    p = 1;
    nb = 0;
}

  public WorkingThread() {
    nb = p;
    p++;
}

  public void run() {

    int start=nb*height/p;
    int end = (nb + 1) * height/p;
    //the image will be split according to y axis in this case
    for(y=start; y < end ; y++) {
       for(x =0; x<width; x++) {
            pixel = img.getRGB(x, y);
            //processing
            img.setRGB(x, y, pixel);
        }
  }
}
ハラルドK

コメントですでに指摘されているように、ベンチマークの欠陥は、スレッドのセットアップとティアダウンのオーバーヘッドが、コードを順番に実行するのに実際にかかる時間よりも大きいことです。

以下のように、時間がかかる愚かなコードを挿入する。

//processing
for (int i = 0; i < 1000; i++) {
    pixel = ((~pixel ^ pixel) | pixel) & pixel;
}

... for x/yループ内で、の最大値を増やすと、i最終的にマルチスレッドバージョンがシーケンシャルバージョンよりも高速になることがわかります。

PS:私はおよそ2500 x3300ピクセルの画像を使用しました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ