- PR -

CrystalReport印刷処理速度について

1
投稿者投稿内容
タケヤブヤケタ
会議室デビュー日: 2008/05/09
投稿数: 2
投稿日時: 2008-05-09 19:34
印刷処理が遅くて困っています。

環境:VB2005,CrystarlReport11

帳票毎にExeを作り
呼び出し元より印刷ボタン押下時に
Shell又はProcessコンポーネントで呼び出して実行しています。

ボタン押下から印刷が始まるまで遅いとの事で
解析してみたところ以下の2点がネックになっているようです。

@帳票のインスタンスを作成(2、3秒)
ASetDatasourseメソッド(Dataset.DataTableが引数)(2、3秒)

仕方ないと諦めるべきでしょうか?
dllにして並列で処理をさせるのも一つとは思うのですが…





じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-05-09 19:57
引用:

タケヤブヤケタさんの書き込み (2008-05-09 19:34) より:

ボタン押下から印刷が始まるまで遅いとの事で
解析してみたところ以下の2点がネックになっているようです。

(1) 帳票のインスタンスを作成(2、3秒)
(2) SetDatasourseメソッド(Dataset.DataTableが引数)(2、3秒)


これ、本当のところですか? 普通の構成であれば EXE が起動するまでの時間が最もネックだと考えています。 (1) の多くはそれを含んでいるのではないでしょうか? (2) についてはわかりませんね。 ただインスタンスの参照をセットしているだけですから、ほぼ一瞬で終わるハズです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
タケヤブヤケタ
会議室デビュー日: 2008/05/09
投稿数: 2
投稿日時: 2008-05-10 12:35
ご返答ありがとうございます。

【EXE が起動するまでの時間が最もネック】
とのご指摘ですが、その通りと思います。

それとは別に、印刷するプログラムを単体で動かし
1命令ずつ処理時間をdebugで出力して解析しました。

具体的には以下のような命令に時間が掛かっているようです。
(※記憶を基にのため命令語など若干違うかもしれません)

@Dim cr as TestCr = new TestCr
Acr.setdatasourse(dtwork)
Bcr.printtoprint(...

こちらの勘違いかもしれませんので
後日、もう一度確認して具体的な数値やプログラムを報告させて頂きます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-05-10 16:15
引用:

タケヤブヤケタさんの書き込み (2008-05-10 12:35) より:

【EXE が起動するまでの時間が最もネック】
とのご指摘ですが、その通りと思います。


ということはやはり起動時間も含めてしまって処理時間をはじき出していたということでしょうか?

引用:

具体的には以下のような命令に時間が掛かっているようです。

(1) Dim cr as TestCr = new TestCr
(2) cr.setdatasourse(dtwork)
(3) cr.printtoprint(...


(1) はレポートの構成によっては時間がかかることがあります。 たとえばサブ レポートを含めるとそれは如実に表れます。 ちなみにこのコンストラクタには ReportEngine の Initialize もあるので 2 回目以降の処理を考えると同プロセスにすることで緩和する部分が存在します。

(2) はやはり普通に考えればあり得ないですね。 あるとすればリレーションが複雑だとかそういった場合です。 通常帳票に使用する DataSource はリレーションが分解された後のものになることが多く可能性としては考えていませんでしたが、どんな DataSource になっているでしょうか?

(3) は印刷処理自体なので除外対象だと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)