スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

なぜGetNextdocumentなのか?

2008年11月11日 02:21

 そういえば、なぜLotusScriptでビューをループするときはWhile ループ+GetNextDocumentで書くのでしょう。
別にGetNthDocument メソッドを使ってFor ループで書いてもいいじゃないか、て僕はよく思っていました。

これをしないのはForループととWhileループの違いではなくて、単純にGetNthDocumentよりGetNextDocumentの方がパフォーマンスがよいからです。とはいえこのことを検証したことは無かったので、エージェントプロファイリングを使って分析して見てみましょう。該当メソッドだけを抜粋しているので完全な形式で無い点はご容赦下さい
 データベースやサンプルコードはは昨日使用したものと同じです。GetNextDocumentのWhileループをview.count を使ってForループに変えるのは自明な変更なので省略させてください。
同じデータベースに対して、ループでアクセスしてメソッドの所要時間を比較してみましょう。

 

全ての文書にアクセスする(Use GetNextDocument)プロフィール

クラス          メソッド オペレーション コール 時間
DocumentCollection  GetNextDocument  1907 40

ここではGetnextDocumentは40msしか消費していません。

全ての文書にアクセスする(Use GetNthDocument)プロフィール
クラス         メソッド オペレーション コール 時間
DocumentCollection  GetNthDocument  1906 1665

結構違いますよね。。。なのでWhileループじゃないといけない理由は分かりませんが、とりあえずGetNextDocumentを使う理由はパフォーマンスが理由にある、と言う事は分かってもらえたのではないかと思います。



コメント

  1. eb24516 | URL | mQop/nM.

    Re: なぜGetNextdocumentなのか?

    個人的には do until ... loop も好きです。
    getFirstDocument() でどうせ最初の文書取らないといけないので。

  2. 長島 | URL | WAwUqL6k

    なるほど

    前置判定って観点では do until ... loop で書いても同じですよね。
     WENDって何となく覚えにくいから、do until ... loop もいいかもしれないですね。。

コメントの投稿

(コメント編集・削除に必要)
(管理者にだけ表示を許可する)

トラックバック

この記事のトラックバックURL
http://hnagasim.blog8.fc2.com/tb.php/15-482fb260
この記事へのトラックバック


最新記事


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。