§4-5  パフォーマンス上の注意事項

1.実測値  ( 2001 年頃の PC での実測値です )

実測値
ご覧のように
      『休日マップデータを使用しないで固定休日:土日 等を指定』
      『圧縮データのマップを指定』
は、他と比べてパフォーマンスが落ちますので、一括処理の中で使用する場合は注意してください。
(注 : 上記のデータ は Windows 98SE 時代の PC による計測値です)

2.所要時間の理由

  「なし」は直接"日付1"と"日付2"をシリアル値で引き算しているだけです。

  「マップ指定(ノーマル)」はループしながら、マップデータ上のシリアル値の位置が
『 "-" か "*" 』かを判定しているだけですので、非常に高速です。

  「マップ指定(圧縮)」では、関数が呼び出される都度、圧縮データを展開する処理が
動きますので、その分時間が掛かります。圧縮マップを用意している理由については、
こちらを参照して下さい。

  「土日」はループしながら、毎回Weekday関数で曜日を取り出しつつ判定しています
ので、それなりに時間が掛かります。

  「土日祝」は祝日判定関数『kt祝日判定』を呼び出している為、多数の条件判断と
色々な関数呼び出しを必要としています(プレマップ期間外)。
  この時間の掛かる祝日判定を少しでも早く処理する為に『祝日プレマップ期間』という
ものを設けています。これにより、「土日」とほぼ同じ位のレスポンスが得られるようになりました。

3.レスポンス向上テクニック

  ワークシート上に圧縮したマップデータを置いている場合、展開処理に時間を要します。
したがって、マクロで1000回を越えるようなループを行なう場合は、ループ処理の前に
      ・セル上のマップデータを展開して文字列変数に格納
      ・その展開した文字列変数をマップとして渡す
という風にするとレスポンスが向上します。

  セル上の式で圧縮したマップデータを利用する場合は、その式の数が数百程度ならば
レスポンス上問題ないと思います。それ以上の場合はノーマルマップデータの方を使ってください。

  「固定休日コード」を「休日マップデータ」に変換するサブルーチンを用意してありますので、
「固定休日コード」を利用している環境で一括処理等を行なう場合は、臨時に「休日マップデータ」
を生成してやると処理を高速化できます。



Home  kt関数 Top  kt関数 Ref  Back Page  Next Page


角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2001 Allrights Reserved.