[Notes/Domino] 文書から値を取得する処理は遅い
文書から値を取得する処理は、1回の処理では充分高速なので、あまりパフォーマンスを意識しないと思いますが、実は結構遅いです。万単位でループしているスクリプトで、思いがけず速度低下の原因になっている場合がありますので、注意が必要です。
たとえば、以下のスクリプトは約1秒ほどかかります。(Virtual PC 環境のため、ちょっと遅いかもしれませんが。)
Dim ss As New NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Dim s As String Dim i As Double Set db = ss.CurrentDatabase Set doc = db.CreateDocument doc.Test = "a" For i = 1 To 50000 s = doc.Test(0) Next
これを以下のように書き換えると、0.02秒で処理されました。
Dim ss As New NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Dim s As String Dim tmp As String Dim i As Double Set db = ss.CurrentDatabase Set doc = db.CreateDocument doc.Test = "a" tmp = doc.Test(0) For i = 1 To 50000 s = tmp Next
わたしの経験では、汎用的に処理できるよう設定文書にいろんな設定を詰め込んだDBで、数万回処理されるループ中にその設定文書の値を何度も使用していたら、劇重になりました(涙)。塵も積もればなんとやら、で、体感的に10倍くらい遅くなったと思います。まさか文書の値を取得しているところが原因でこれだけ重くなるとは解らず、1日悩みました(号泣)。みなさんも注意してください……。
コメント
コメントはありません
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。