• ベストアンサー

パフォーマンスについて

ASPからExcelの既存マクロを実行させようとしております。 既存マクロでは、シート上の値を参照集計して、帳票を出力していました。 これを、次の2つの方法のうちでどちらの方がパフォーマンスが良いか悩んでいます。 ----------------方法(1)---------------------------- ・ASP側でDBから値を取得する。 ・取得したデータをCSVする。 ・ASPでExcelを起動させる際にCSVを読み込ませて、既存シートと同じ体裁のシートを自動作成する。 ・既存マクロの実行 -------------------------------------------------- ----------------方法(2)---------------------------- ・ASP側でDBから値を取得する。 ・ASPでExcelを起動させ、既存シートと同じ体裁になるように、取得したデータを セルに代入する。(シートの自動作成) ・既存マクロの実行 -------------------------------------------------- とあるHPで、方法(1)の方が、方法(2)よりもパフォーマンスが良かったそうなのですが、本当にそうなのでしょうか? あと、IF文のネストとSELECT CASE文は、どちらがパフォーマンスが良いのでしょうか? ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • msystem
  • ベストアンサー率42% (79/186)
回答No.2

私もhequilさんの意見に賛成です。 ただ考えるに、データ件数が少ないときは方法(2)のほうがパフォーマンスがよく、データ件数が増えると、方法(1)のほうがパフォーマンスがよいような気がします。 どちらの方法も、あらかじめ、サーバーサイドでExcelを立ち上げておいたほうがパフォーマンスがいいと思います。Excelの起動はなかなか時間のかかる処理なので、Global.asaであらかじめExcelを立ち上げておいて、Applicationオブジェクトに入れておくのがいいのではないでしょうか?

その他の回答 (1)

  • hequil
  • ベストアンサー率65% (242/372)
回答No.1

このようなパフォーマンスの優劣ですが、 一般的にこっちの方が早い、というのはあっても 実際に処理の内容によっては異なることもあります。 当たり前な話ですが、実際の処理を2パターンとも作成し、処理時間を計測するのが一番だと思います。 (面倒ですが・・・・) なお、ASPで処理時間を計測する方法の1つとして 河端善博氏が公開されているTimeToolコンポーネントの GetTickCount関数を利用すればミリ秒単位での計測が可能です。 以上、参考まで

参考URL:
http://www.kawabata.com/TimeTool/