Free Support Forum - groupdocs.com

TIFFの表示を早くしたい

図面などを管理するシステムと連携して,図面のビューワを作成しています。
主にTIFFがあり,シングルページのものからマルチTIFFも存在しています。
またA1~A4までいろんなバリエーションがあります。
LoadOptions, ViewerSettings,JpgViewOptionsをいろいろ設定してみているのですが,
読み込み速度を向上する事は可能でしょうか?
使用しているバージョンは 20.11.0,DotNetでFW4.6.1のWindowsアプリです。

こんにちは @kosuke_baba.rsg.kobe

異なるページサイズの画像の TIFF ファイルの処理を高速化する必要がありますか?

パフォーマンスを測定するためのサンプルファイルとコードはありますか?

返信ありがとうございます。
プログラムの一部を抜粋しました。
このロジックで一番下のTIFFを処理すると20秒くらかかります。
実際の図面も2MBくらいのTIFFで同様の時間かかっています。

Dictionary<Int32, MemoryStream> pages = new Dictionary<Int32, MemoryStream>();
MemoryPageStreamFactory pageStreamFactory = new MemoryPageStreamFactory(pages);

FileType fileType = FileType.FromExtension(Path.GetExtension(zumen.FILE_NAME));
LoadOptions loadOptions = new LoadOptions(fileType);

ViewerSettings viewerSettings = new ViewerSettings(CustomViewerLogger.Get());

using(Viewer viewer = new Viewer(fullPath, loadOptions, viewerSettings)) {
JpgViewOptions viewOpts = new JpgViewOptions(pageStreamFactory);
viewer.View(viewOpts);
}

サンプルのTIFFは下記を使用しました。
https://www.fileformat.info/format/tiff/sample/1f37bbd5603048178487ec88b1a6425b/view.htm

Hi @kosuke_baba.rsg.kobe

どのCPU? どのくらいのRAM?

こんにちは @kosuke_baba.rsg.kobe

パフォーマンス測定アプリを添付しました。 このファイルは3秒で処理されました。

SampleApp.zip (2.5 MB)

おはようございます。
サンプル作成をありがとうございます。こちらも3秒弱程度で実行されました。
シンプルなコードで実行する事でボトルネックが判明いたしました。

TIFFファイルなのですが,別サーバに保管しているため共有フォルダにアクセスしています。
ネットワークパスに変える事で,3秒⇒20秒になりました。

ローカルファイルアクセスでないと速度向上は難しいでしょうか?

こんにちは @kosuke_baba.rsg.kobe

ファイルはサーバーからローカルコンピューターにどのくらいの速さでコピーされますか? たぶん、ネットワークを介したデータ転送の速度に制限がありますか?

頂いたサンプルにて,
1.直接ローカルを処理するのに2.5秒,
2.ネットワークパスからだと20秒,
3.ネットワークパスからローカルコピーして処理すると,コピー含めても3秒
でした。

こんにちは @kosuke_baba.rsg.kobe
サーバーからローカルコンピューターにファイルをコピーするのにどのくらい時間がかかりますか?

実行サンプルは下記です。
コピー処理の有無で,0.7秒くらいの差が出ています。

var sw = new Stopwatch();
sw.Start();

MemoryPageStreamFactory pageStreamFactory = new MemoryPageStreamFactory();

FileType fileType = FileType.FromExtension(Path.GetExtension(“MARBLES.TIF”));
LoadOptions loadOptions = new LoadOptions(fileType);

ViewerSettings viewerSettings = new ViewerSettings(new ConsoleLogger());

String pathLocal = “MARBLES.TIF”;
String pathNetwork = @"\[SERVER_NAME]\Documents#SCAN\MARBLES.TIF";
String pathCopied = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

var mode = MODE.PATH_COPIED;

if(mode == MODE.PATH_COPIED) {
File.Copy(pathNetwork, pathCopied);
}

String path = mode == MODE.PATH_LOCAL ? pathLocal : mode == MODE.PATH_NETWORK ? pathNetwork : pathCopied;

using(Viewer viewer = new Viewer(path, loadOptions, viewerSettings)) {
JpgViewOptions viewOpts = new JpgViewOptions(pageStreamFactory);
viewer.View(viewOpts);
}

sw.Stop();

Console.WriteLine(“Time Taken: " + sw.Elapsed.TotalMilliseconds.ToString(”#,##0.00 ‘milliseconds’"));
//LOCAL: Time Taken: 2,091.04 milliseconds
//NETWORK: Time Taken: 35,077.98 milliseconds
//COPIED: Time Taken: 2,727.15 milliseconds

こんにちは @kosuke_baba.rsg.kobe

このコードの実行時間はどのくらいですか?

var sw = new Stopwatch();

String pathNetwork = @"[SERVER_NAME]\Documents#SCAN\MARBLES.TIF";
String pathCopied = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

sw.Start();
File.Copy(pathNetwork, pathCopied);
sw.Stop();

Console.WriteLine(“Time Taken for file copy: " + sw.Elapsed.TotalMilliseconds.ToString(”#,##0.00 ‘milliseconds’"));

Time Taken for file copy: 1,069.50 ‘milliseconds’

となりました。

@kosuke_baba.rsg.kobe

この問題は、私たちの側で再現できます。 VIEWERNET-3093 で社内の問題追跡システムにログインしています。 更新があると、通知されます。

ご対応頂きありがとうございました!
修正されることをお待ちいたします。

このスレッドはクローズされますでしょうか?

@kosuke_baba.rsg.kobe
このスレッドは開かれます。 ここでお答えします

了解いたしました。
回答を心待ちにしておきます。