- - PR -
VB.NETであるコンポーネントのインスタンス生成(DLLのロード)が端末によっては異常に遅い
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-27 13:25
お世話になってます。
現在、VB.NET 2005 とVB-Report 5.0 for .NET(評価版)で、開発環境の評価をして います。 なぜか、VB-Reportのインスタンスを生成(New)するのにPCによっては異常に時間が かかります。 以下のソースコードでPC6台程度検証して、問題ない端末4台程度は400〜500ms程度 でNewできるのですが、問題ある端末は10s〜15s、30s程度と異常に時間がかかります。
はじめは開発環境からの実行での問題と思いました。 そこで、EXEを作って必要DLLをフォルダに含めて、そのフォルダを丸ごとテスト端末 のローカルにコピーしパスなど特に設定せずにEXEを実行してテストしてみているの ですが、多くは問題ない速度なのですが、同一条件でも2台程度が異常に遅いのです。 VB-Report以外の製品のインスタンス生成は問題ありません。 VB-Reportのバージョンも.NET 2.0対応のもので検証しています。 OSやSPの違いなども確認してみたのですが、(おそらく)同一条件でも異常に遅いも のがあります。 DLLのロードが遅いのかとも思いましたが、同じ命令(Newで生成)を2度連続して実行 してみても2度目も同じ速度で遅いです。 メーカに問い合わせたほうがいいのかもしれませんが、購入前の検証なので体験版を 使用しているうえ、VB-Report固有の問題かの切り分けができていないので、まだ メーカには問い合わせていません。 一般的に、インスタンス生成が異常に遅い場合何として原因が考えられますでしょうか? また、何か原因を特定する手段や調べる箇所はありますでしょうか? ※以前も同じ内容の質問で質問させていただいたことがありました。 以前は、.NET 2.0(ベータ) + VB-Report(.NET2.0非対応)での環境だったので、 深く原因調査はしていませんでしたが、今回.NET2.0環境がそろったことで、同じ テストを試みたところ、依然と同じく遅く、原因追及に行き詰ったので、再度質問 させていただきました。 [ メッセージ編集済み 編集者: maru 編集日時 2006-01-27 13:34 ] | ||||||||
|
投稿日時: 2006-01-27 14:15
Windows Form ではなく VB-Report が原因だったというこれですね。 .NET Windowsフォームのパフォーマンスについて
VB-Report のインスタンスの生成って Report オブジェクトに対してですよね? だとすれば、単に Report が複雑すぎてインスタンス化に手間取っているくらいしか考えられないでしょうね。 もし、その Report が複雑でない簡易な帳票であれば、ベンダに問い合わせるしかないでしょうね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-27 14:45
返答ありがとうございます。
それがですね、Reportが複雑もなにもソースのように単純に VBReport.XlsReportCtrl.XlsReportCtrl をソースからNewしているだけで、こんなに遅いのです。 | ||||||||
|
投稿日時: 2006-01-27 15:00
VBReport 「だけ」で問題が発生するなら、ベンダに問い合わせてみた方がいいでしょうね。 体験版を使っているとしても、遠慮は要らないと思います。 製品を購入する前に、それが目的に適った物であるかどうかを知るための体験版ですから | ||||||||
|
投稿日時: 2006-01-27 15:07
独自にデザインした Report が重いのではないでしょうか、という意味でしたが、 どうやら、既定のコントロールで重いということですか... XlsReportCtrl 以外の型は試されました? 環境の違う端末などでも試されました? 検証が十分であれば、問い合わせもしやすいと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-28 12:07
こんにちは。
あれから、VB-Reportの姉妹製品のEXCEL Creator、グレープシティ製のコンポーネント 6製品(体験版)で同様のテストをしてみました。 複数の端末でテストしたのですが、大半の端末では正常で、Newするのに数ミリ秒で 行えるのですが、やはり(いまのとこ)特定の端末2台だけがVB-ReportのNewに10s 〜30sかかっています。 CPUやメモリスペックの低い端末でも数ミリ秒で行えているのですが、CPUや空メモリ スペックの高い端末でもNGです。 メーカーに問い合わせてみることにします。 [ メッセージ編集済み 編集者: maru 編集日時 2006-01-28 12:10 ] | ||||||||
|
投稿日時: 2006-01-28 20:03
スペックを見るのではなく、その 2 端末との環境の違いを見るべきだと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-30 10:08
あれからいろいろと調べた結果、VB-Report自身の問題というより、プリンタドライバ
の問題であることが濃厚となりました。 VB-Reportはnewするタイミングで印刷系のAPI(PrintDocument)クラスを内部的に生成 して印刷部数やページ設定を取得しているようですが、問題のある端末ではそのPrintDocumentクラスの挙動そのものが遅いようでした。 ためしに、PrintDocumentオブジェクトを生成してプロパティにアクセスするサンプル を作ってみたところ予想どうり異常に遅かったです。 PrintDocumentクラスの1つのプロパティにアクセスするのに、問題ない端末では ほとんど0秒で処理されているのですが、問題のある端末では0.5〜6sと異常な 応答速度で、それが積もりに積もって結果的にVB-Reportのオブジェクト生成に 10〜40秒とかかっていました。 ためしにダミーのプリンタドライバに切り替えてみると瞬間で生成されました。 普通のアプリケーションから印刷するのにぜんぜん体感速度的には問題ないのですが、 内部的にはなんか変になっているようです。 プリンタドライバ周りの可能性が高いのですが、同じドライバを使っている端末でも 問題ないやつがほとんどなので、共有プリンタということでネットワーク設定がらみが 怪しいような気もします。 ただ、問題のあるプリンタドライバや設定でも、今までオフィスや市販アプリケーショ ンなど普通の体感速度で使えているのが不思議です。 |
1