- PR -

ActiveReports2.0 表示のスピードが遅い

1
投稿者投稿内容
高山
会議室デビュー日: 2008/01/29
投稿数: 2
投稿日時: 2008-01-29 21:41
チャートでたくさんの点を描画しているレポートを作りました。けど、一ページの帳票をプレビューするとき、3、4秒ぐらいかかります。20ページの帳票をプレビューするとき、76秒ぐらいかかります。
もっとプレビューのスピードをアップしたいです。

----------------------------
------帳票に関する情報------
OS: WINDOWS XP SP2
言語:VB.NET 1.1
コンポーネント:ActiveReports2.0 トライアル版

グループを使用して、グループヘッドにチャットコントロールを設置しています。
ChartContorlで PlotXYを使っている。
ページごとにひとつのSeriesに配列でX(6000),Y(6000)の値を設置するようにしている。
ページごとに点の値は6000ぐらいです。
---------------------------
今、ActiveReports2.0で描画するのが決まっているので、これを使って描画しかできません。
しかし、今のレスポンスの速さが我慢できない。
ネットでたくさん調べましたが、なかなか解決できませんでした。 
みんな、助けて!!!
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-01-30 09:52
引用:

高山さんの書き込み (2008-01-29 21:41) より:

チャートでたくさんの点を描画しているレポートを作りました。けど、一ページの帳票をプレビューするとき、3、4秒ぐらいかかります。20ページの帳票をプレビューするとき、76秒ぐらいかかります。もっとプレビューのスピードをアップしたいです。


まず "たくさんの点" がどれほどのものなのか良くわかりません。 ActiveReports は出力処理自体は早い方だと思っていますが、さすがに相当量だと遅くなります。

引用:

しかし、今のレスポンスの速さが我慢できない。
ネットでたくさん調べましたが、なかなか解決できませんでした。
みんな、助けて!!!


ActiveReports 側の処理が遅いか、OS の描画自体が遅いかで代替案も変わってきそうです。 もう少し具体的な情報をお願い致します。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
高山
会議室デビュー日: 2008/01/29
投稿数: 2
投稿日時: 2008-01-30 13:46
引用:

じゃんぬねっとさんの書き込み (2008-01-30 09:52) より:
[
ActiveReports 側の処理が遅いか、OS の描画自体が遅いかで代替案も変わってきそうです。 もう少し具体的な情報をお願い致します。




じゃんぬねっとさん ご返信ありがとうございます。
今までの調査した結果より、ActiveReportsのRunメソッドの処理が時間がかかります。
テスト用ソースは少しあげます。
------------------------------
コード:
'呼び出す側
	Dim X(5999) as Double
	Dim Y(5999) as Double
	・・・X,Yのデータを設定 省略 ・・・
	'For i as integer=0 to 0  'テスト1 
	For i as integer=0 to 19  'テスト2
		rptDataListX.Add(X)		'レポートのデータを設定
		rptDataListY.Add(Y)			
	Next
	Dim StartTime As DateTime	'テスト用スタート時間
	Dim EndTime As DateTime		'テスト用終了時間
	StartTime = Now
	System.Console.WriteLine(StartTime.ToLongTimeString & "." & StartTime.Millisecond.ToString)
	'レポートの実行
	rpt.Run()
	EndTime = Now
	System.Console.WriteLine(EndTime.ToLongTimeString & "." & EndTime.Millisecond.ToString)
	PreViewer.Viewer1.Document = rpt.Document
-------------------------------
'レポートrpt側
	'レポートはグループヘッドにチャートコントロールを一つ入れる。他はない
   private PageIndex as Integer =0 
  Private Sub GroupHeader1_BeforePrint(ByVal sender As Object, ByVal e As System.EventArgs) Handles GroupHeader1.BeforePrint
	For i As Integer = 0 To rptDataListX.Count - 1
            If i = PageIndex  Then
                Dim series As New DataDynamics.ActiveReports.Chart.Series

                'seriesのマークの設定
                series.Marker = New DataDynamics.ActiveReports.Chart.Marker(Chart.Graphics.AntiAliasMode.None)
                series.Marker.Style = Chart.MarkerStyle.Point
                series.Marker.Size = 1
                series.Marker.Label.Format = ""
                series.Type = Chart.ChartType.PlotXY

                'seriesにデータを入れる
                series.Points.DataBindXY(rptDataListX(i), rptDataListY(i))
                Me.Chart1.Series.Add(series)	'シリーズをチャートコントロールに追加する
	    elseIf i>pageIndex then
			Exit Next
        End If
    Next
        pageIndex = pageIndex + 1
    End Sub
    '他のセクションの設定がない


------------------------------

-----テスト結果-------
結果1
 描画の点 = 6000 点
 ページ数 = 1
 StartTime = 12:58:36.320
 EndTime = 12:58:39.154
 時間差  = 00:00:02.834
結果2
 描画の点 = 120000 点
 ページ数 = 20
 StartTime = 13:04:45.571 
 EndTime = 13:06:18.975
 時間差  = 00:01:33.404
----------------------------

以上は情報となります。
よろしくお願いいたします。
1

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