§4-5 パフォーマンス上の注意事項
1.実測値 ( 2001 年頃の PC での実測値です )
ご覧のように
『休日マップデータを使用しないで固定休日:土日祝 等を指定』
『圧縮データのマップを指定』
は、他と比べてパフォーマンスが落ちますので、一括処理の中で使用する場合は注意してください。
(注 : 上記のデータ は Windows 98SE 時代の PC による計測値です)
2.所要時間の理由
「なし」は直接"日付1"と"日付2"をシリアル値で引き算しているだけです。
「マップ指定(ノーマル)」はループしながら、マップデータ上のシリアル値の位置が
『 "-" か "*" 』かを判定しているだけですので、非常に高速です。
「マップ指定(圧縮)」では、関数が呼び出される都度、圧縮データを展開する処理が
動きますので、その分時間が掛かります。圧縮マップを用意している理由については、
こちらを参照して下さい。
「土日」はループしながら、毎回Weekday関数で曜日を取り出しつつ判定しています
ので、それなりに時間が掛かります。
「土日祝」は祝日判定関数『kt祝日判定』を呼び出している為、多数の条件判断と
色々な関数呼び出しを必要としています(プレマップ期間外)。
この時間の掛かる祝日判定を少しでも早く処理する為に『祝日プレマップ期間』という
ものを設けています。これにより、「土日」とほぼ同じ位のレスポンスが得られるようになりました。
3.レスポンス向上テクニック
ワークシート上に圧縮したマップデータを置いている場合、展開処理に時間を要します。
したがって、マクロで1000回を越えるようなループを行なう場合は、ループ処理の前に
・セル上のマップデータを展開して文字列変数に格納
・その展開した文字列変数をマップとして渡す
という風にするとレスポンスが向上します。
セル上の式で圧縮したマップデータを利用する場合は、その式の数が数百程度ならば
レスポンス上問題ないと思います。それ以上の場合はノーマルマップデータの方を使ってください。
「固定休日コード」を「休日マップデータ」に変換するサブルーチンを用意してありますので、
「固定休日コード」を利用している環境で一括処理等を行なう場合は、臨時に「休日マップデータ」
を生成してやると処理を高速化できます。
角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2001 Allrights Reserved.