Takenoff Labs

Lotus Notes/Domino に関する Tips や、クラシックの名曲などを紹介します

[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日悩みました(号泣)。みなさんも注意してください……。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
読み込み中...

Navigation

前の記事(カテゴリ内):

次の記事(カテゴリ内):

前の記事(日付順):

次の記事(日付順):

トラックバック

トラックバックはありません

コメント

コメントはありません

※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。





(以下のタグが使えます)
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

For spam filtering purposes, please copy the number 5056 to the field below:

^
×